【问题标题】:Flask RESTful POST JSON fails烧瓶 RESTful POST JSON 失败
【发布时间】:2014-04-11 23:48:50
【问题描述】:

我通过 curl 从 cmd (Windows7) 将 JSON 发布到 Flask RESTful 时遇到问题。 这是我发布的内容:

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)

【问题讨论】:

    标签: python json rest curl flask


    【解决方案1】:

    -d '{"Hello":"Karl"}' 在 Windows 中不起作用,因为它被单引号包围。使用双引号,它会为你工作。

    -d "{\"Hello\":\"Karl\"}"
    

    【讨论】:

    • 谢谢!一直期待问题出在天知道哪里,而不是使用带有“curl json windows”的goodle。再次感谢
    【解决方案2】:

    我只想指出,无论操作系统如何,您都需要转义 - 并且无论您是否在请求数据周围加上双引号 - 我看到这篇文章并认为这不是我的问题的答案,因为我有双引号请求数据周围的引号和内部的单引号:

    这行不通:

    -d "{'Hello': 'Karl'}"
    

    这将:

    -d "{\"Hello\":\"Karl\"}"
    

    同样,无论操作系统如何(我在 Mac 上),无论您是单引号还是双引号,您都需要转义引号

    感谢Sabuj Hassan 的回答!

    【讨论】:

      【解决方案3】:

      要附加到前两个答案,您不需要需要在所有操作系统中转义引号,遵循此语法在 Mac/Linux 上可以正常工作:

      -d '{"Hello":"Karl"}'
      

      【讨论】:

        猜你喜欢
        • 2019-10-25
        • 2020-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-24
        • 1970-01-01
        相关资源
        最近更新 更多