Flask RESTful POST JSON失败

时间:2014-03-08 18:58:46

标签: python json rest curl flask

我在通过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)

3 个答案:

答案 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"}'
相关问题