龙卷风。如何获得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
直接读取数据流。
这是一个 shell 引用问题:shell 正在删除命令 curl 127.0.0.1:3000 -i -d {"a":12}
中的引号。如果您引用 -d
的参数(您在问题正文中所做的:curl -i localhost:8888 -d '{"a":12}'
,您应该会得到预期的结果。
伙计们。我无法使用 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
直接读取数据流。
这是一个 shell 引用问题:shell 正在删除命令 curl 127.0.0.1:3000 -i -d {"a":12}
中的引号。如果您引用 -d
的参数(您在问题正文中所做的:curl -i localhost:8888 -d '{"a":12}'
,您应该会得到预期的结果。