返回Tornado POST请求的响应

时间:2018-06-20 13:07:13

标签: python json post tornado yield-keyword

我看过龙卷风文档和示例,其中self.write方法被广泛用于在HTML上呈现某些值,其中POST请求在处理程序中运行。但是我找不到如何将响应返回给客户端的清晰说明。

例如,我正在客户端从Tornado服务器上调用POST请求。接受发布请求的代码是:

Content-Length

这样,我可以找到cbtp的值,并使用class strest(tornado.web.RequestHandler): def post(self): value = self.get_argument('key') cbtp = cbt.main(value) ,可以将其打印为HTML。但是,我想以JSON格式将此值返回给客户端,例如self.write(cbtp) 我想知道如何修改我的代码,以便将此响应发送到客户端,或者给我一些文档,对此进行了流利的解释。

做类似

{'cbtp':cbtp}

抛出一个res = {cbtp: cbtp} return cbtp

2 个答案:

答案 0 :(得分:2)

您只需要将输出类型设置为JSON和json.dump您的输出。

通常我在名为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)

答案 1 :(得分:0)

如果给定的块是字典,我们将其写为 JSON,并将响应的 Content-Type 设置为 application/json。 (如果您想将 JSON 作为不同的 Content-Type 发送,请在调用 write() 后调用 set_header)。

使用它应该给你你想要的:

self.write(json.dumps({'cbtp': cbtp}))