在我的Tornado RESTful API中,我在/{prefix}/items/
处有一个CollectionHandler
和一个post()
来创建一个新的item
,它将放在/items/{id}
下。当我返回201
状态代码时,我希望包含/items/{id}
的主体,它由ItemHandler
的{
class CollectionHandler(tornado.web.RequestHandler):
def initialize(self):
self.service = Service()
def post(self, prefix):
do_stuff(prefix)
item, item_url = create_item()
self.set_status(201)
self.set_header('Location', item_url)
self.write(ItemHandler.do_get(self.service, item_url, item.id))
class ItemHandler(tornado.web.RequestHandler):
def initialize(self):
self.service = Service()
@staticmethod
def do_get(service, item_url, item_id):
item = service.get_item(item_id)
if not item: raise tornado.web.HTTPError(404)
response = construct_response(item_url, item)
return response
def get(self, item_id):
item_url = get_url(self.request)
self.write(ItemHandler.do_get(self.service, item_url, item_id))
我该怎么清理这个?我正考虑在内部为新创建的/items/{id}
执行一个HTTP请求并包括响应,但是肯定有更好的方法-它甚至可能因为阻塞而无法工作。。。在
首先,我建议您在CollectionHandler post()中考虑重定向
不过,我猜你是附属于你的201状态码,所以重定向不会为你工作。在
你试过像这样使用mixin吗?公司名称:
^{pr2}$相关问题 更多 >
编程相关推荐