har*_*han 2 python post json tornado yield-keyword
我看过 Tornado 文档和示例,其中 self.write 方法广泛用于在 HTML 上呈现某些值,其中 POST 请求在处理程序中运行。但我无法清楚地了解如何将响应返回给客户端。
例如,我从客户端调用 Tornado 服务器上的 POST 请求。接受post请求的代码是:
class strest(tornado.web.RequestHandler):
def post(self):
value = self.get_argument('key')
cbtp = cbt.main(value)
Run Code Online (Sandbox Code Playgroud)
通过这个,我可以找到 cbtp 的值,并且通过self.write(cbtp),我可以将其以 HTML 格式打印。但相反,我想以 JSON 格式将此值返回给客户端,就像{'cbtp':cbtp}
我想知道如何修改我的代码以便将此响应发送到客户端,或者给我一些文档,其中对此进行了流畅的解释。
做类似的事情
res = {cbtp: cbtp}
return cbtp
Run Code Online (Sandbox Code Playgroud)
抛出一个BadYieldError: yielded unknown object
您只需将输出类型设置为 JSON 并 json.dumps 您的输出。
通常我在名为 RESTRequestHandler 的父类中具有 set_default_headers 。如果您只需要一个返回 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)
Run Code Online (Sandbox Code Playgroud)