我在通过curl从cmd(Windows7)向Flask RESTful发布JSON时遇到问题。 这就是我发布的内容:
curl.exe -i -H "Content-Type: application/json" \
-H "Accept: application/json" -X POST \
-d '{"Hello":"Karl"}' http://example.net:5000/
它导致一个错误的请求,我也不知道如何调试这个,通常我会打印出信息到控制台,但这不起作用。你如何调试wsgi应用程序?看似无望的任务......
这是我在网上看到的简单测试应用程序:
from flask import Flask, request
from flask.ext.restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class Test(Resource):
def post(self):
#printing request.data works
json_data = request.get_json(force=True) # this issues Bad request
# request.json also does not work
return {}
api.add_resource(Test, '/')
if __name__ == '__main__':
app.run(debug=True)
答案 0 :(得分:6)
-d '{"Hello":"Karl"}'
无法在Windows中使用单引号包围。使用双引号,它将适合您。
-d "{\"Hello\":\"Karl\"}"
答案 1 :(得分:0)
我只是想指出,无论操作系统是什么,你都需要逃避 - 无论你的请求数据是否有双引号 - 我看到这篇文章并没有认为这是我的问题的答案,因为我请求数据和单引号内有双引号:
这不会起作用:
-d "{'Hello': 'Karl'}"
这将:
-d "{\"Hello\":\"Karl\"}"
同样,无论操作系统是什么,我都需要转义引号(我在Mac上),无论你是单引号还是双引号
感谢Sabuj Hassan的回答!
答案 2 :(得分:0)
要添加前两个答案,您不需要需要来转义所有操作系统的引号,遵循此语法在Mac / Linux上运行正常:
-d '{"Hello":"Karl"}'