【问题标题】:Flask API failing to decode JSON data. Error: "message": "Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)"Flask API 无法解码 JSON 数据。错误:“消息”:“无法解码 JSON 对象:预期值:第 1 行第 1 列(字符 0)”
【发布时间】:2019-07-21 07:53:31
【问题描述】:

我正在使用flask 和flask-restful 设置一个简单的rest api。现在我要做的就是用一些 Json 数据创建一个发布请求,然后返回它以查看它是否有效。我总是遇到同样的错误"message": "Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)"

下面是我的代码

from flask import Flask, jsonify, request
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)


class Tester(Resource):
   def get(self):
       return {'about': 'Hello World'}

   def post(self):
       data_json = request.get_json(force=True)
       return {'you sent': data_json}


api.add_resource(Tester, '/')

if __name__ == '__main__':
    app.run(debug=True)

我要测试的 curl 请求如下,我也尝试使用邮递员发出请求

curl -H "Content-Type: application/json" -X POST -d '{'username':"abc",'password':"abc"}' http://localhost:5000

【问题讨论】:

  • 在邮递员中,您是否选择了 raw-> JSON (application/json) 选项?
  • @needtobe 不,我没有。刚试了一下,我收到了 200 条回复。谢谢你。那就是说为什么它似乎在 curl 请求中不起作用?
  • 使用 Postman 生成 cURL 请求代码
  • 试试 curl -i -H "Content-Type: application/json" -X POST -d "{\"username\":\"abc\", \"password\":\" abc\"}" 127.0.0.1:5000 代替。
  • @FProlog 试试我上面贴的 cURL。

标签: python flask flask-restful


【解决方案1】:

您需要像这样在 Postman 中选择 raw -> JSON (application/json):

当涉及到你的 cURL 请求时,answer 解释说 windows 的命令行缺乏对带单引号的字符串的支持,所以使用:

curl -i -H "Content-Type: application/json" -X POST -d "{\"username\":\"abc\", \"password\":\"abc\"}" 127.0.0.1:5000

改为:

curl -H "Content-Type: application/json" -X POST -d '{'username':"abc",'password':"abc"}' http://localhost:5000

\ 转义 " 字符。

【讨论】:

    【解决方案2】:

    您还需要启用 Content-Length 标头。

    【讨论】:

      【解决方案3】:

      curl 请求(有效负载)不正确。在有效负载中使用双引号。

      curl -H "Content-Type: application/json" -X POST -d '{"username":"abc","password":"abc"}' http://localhost:5000
      

      【讨论】:

      • 有效载荷中的单引号 --> '{'.
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 2021-02-10
      相关资源
      最近更新 更多