龙卷风。如何获得raw request.body?

Tornado. How get raw request.body?

伙计们。我无法使用 Tornado 获取原始 body 数据。我确实要求 curl -i localhost:8888 -d '{"a":12}' 并期望在 request.body 中得到字符串 '{"a":12}',但收到 '{a:12}'。 源代码:

import tornado.web
import tornado.ioloop

class MainHandler(tornado.web.RequestHandler):
    def post(self):
        self.write(self.request.body)

if __name__ == "__main__":
    app = tornado.web.Application({
        (r"/", MainHandler)
    })
    app.listen(3000)
    tornado.ioloop.IOLoop.instance().start()

卷曲结果:

$ curl 127.0.0.1:3000 -i -d {"a":12}
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: TornadoServer/4.0.2
Content-Length: 6
Date: Thu, 22 Jan 2015 14:00:19 GMT

{a:12}

Python版本为3.4.2,Tornado版本为4.0.2

使用self.request.connection.stream.read_bytes直接读取数据流。

Source

这是一个 shell 引用问题:shell 正在删除命令 curl 127.0.0.1:3000 -i -d {"a":12} 中的引号。如果您引用 -d 的参数(您在问题正文中所做的:curl -i localhost:8888 -d '{"a":12}',您应该会得到预期的结果。