Python Tornado POST请求的返回响应
我看过Tornado文档和示例,其中self.write方法被广泛用于在HTML上呈现一些值,POST请求在处理程序中运行。但对于如何将回复回复回复给客户,我并没有发现太多的明确性 例如,我正在从我的客户端调用Tornado服务器上的POST请求。接受post请求的代码为:Python Tornado POST请求的返回响应,python,json,post,tornado,yield-keyword,Python,Json,Post,Tornado,Yield Keyword,我看过Tornado文档和示例,其中self.write方法被广泛用于在HTML上呈现一些值,POST请求在处理程序中运行。但对于如何将回复回复回复给客户,我并没有发现太多的明确性 例如,我正在从我的客户端调用Tornado服务器上的POST请求。接受post请求的代码为: class strest(tornado.web.RequestHandler): def post(self): value = self.get_argument('key') c
class strest(tornado.web.RequestHandler):
def post(self):
value = self.get_argument('key')
cbtp = cbt.main(value)
有了这个,我可以找到cbtp的值,有了self.write(cbtp)
,我可以用HTML打印它。但是,我希望以JSON格式将该值返回给客户机,比如{'cbtp':cbtp}
我想知道如何修改我的代码,以便将此响应发送给客户机,或者给我一些文档,在这些文档中可以流利地解释这一点
像这样做
res = {cbtp: cbtp}
return cbtp
抛出一个
BadYieldError:generated unknown object
您只需要将输出类型设置为JSON,JSON.dump您的输出
通常,我在一个名为RESTRequestHandler的父类中有set_default_头。如果只需要一个返回JSON的请求,可以在post调用中设置头
class strest(tornado.web.RequestHandler):
def set_default_headers(self):
self.set_header("Content-Type", 'application/json')
def post(self):
value = self.get_argument('key')
cbtp = cbt.main(value)
r = json.dumps({'cbtp': cbtp})
self.write(r)
您只需要将输出类型设置为JSON,JSON.dump会转储您的输出 通常,我在一个名为RESTRequestHandler的父类中有set_default_头。如果只需要一个返回JSON的请求,可以在post调用中设置头
class strest(tornado.web.RequestHandler):
def set_default_headers(self):
self.set_header("Content-Type", 'application/json')
def post(self):
value = self.get_argument('key')
cbtp = cbt.main(value)
r = json.dumps({'cbtp': cbtp})
self.write(r)
如果给定的块是一个字典,我们将其写为JSON,并将响应的内容类型设置为application/JSON。(如果要将JSON作为不同的内容类型发送,请在调用write()后调用set_header) 使用它应该给你想要的东西:
self.write(json.dumps({'cbtp':cbtp}))
如果给定的块是一个字典,我们将其写为JSON,并将响应的内容类型设置为application/JSON。(如果要将JSON作为不同的内容类型发送,请在调用write()后调用set_header)
使用它应该给你想要的东西:
self.write(json.dumps({'cbtp':cbtp}))
除了这个答案,我还想提一下,如果您只想以JSON的形式发送dict,您可以使用self.write({'cbtp':cbtp})
,Tornado将自动以JSON的形式发送dict,并处理好标题和所有这些内容。代码将更短。但是如果您还想发送JSON格式的列表,那么这个答案是唯一的选择。来源:除了这个答案,我想提到的是,如果您只想以JSON的形式发送dict,您可以使用self.write({'cbtp':cbtp})
,Tornado会自动将其作为JSON发送,并考虑到头和所有这些。代码将更短。但是如果您还想发送JSON格式的列表,那么这个答案是唯一的选择。资料来源: