bcw*_*b88 3 python json tornado
龙卷风支持Content-Type "application/json"吗?
根据调用堆栈(假设stream_request_body = False),调用请求体的唯一方法是parse_body_arguments(httputil.py 662),它只接受"application/x-www-form-urlencoded"和"multipart/form-data"
解决方案非常简单.你只需要json.loads()收到的身体并相信它是一个正确的JSON编码字典(如果你愿意,抓住异常并提供有意义的反馈).你不能指望application/json在Content-Type; 在一个已经存在的POST期间application/x-www-form-urlencoded.
这是一个示例服务器:
import json
import tornado.httpserver
import tornado.ioloop
import tornado.web
class MyHandler(tornado.web.RequestHandler):
def post(self):
data = json.loads(self.request.body.decode('utf-8'))
print('Got JSON data:', data)
self.write({ 'got' : 'your data' })
if __name__ == '__main__':
app = tornado.web.Application([ tornado.web.url(r'/', MyHandler) ])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(8888)
print('Starting server on port 8888')
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
您可以使用例如curl:
curl -d '{"hello": "world"}' http://localhost:8888/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6417 次 |
| 最近记录: |