【问题标题】:Request to API Flask-Restful with JWT header and JSON data使用 JWT 标头和 JSON 数据向 API Flask-Restful 请求
【发布时间】:2018-01-03 21:48:00
【问题描述】:

我正在尝试从 python 执行以下操作:

这项工作:

curl -i -H "Content-Type: application/json" -H "Accept: application/json" -X GET  -d "{\"Dato\":\"1\"}" http://localhost:5000/api/v1/recurso -H " Authorization: JWT ...p_GWs2XOAY" 

我的资源:

class RecursoPrivado(Resource):

@jwt_required()
def get(self):
    json_data = request.get_json(force=True)
    #data  = json.loads(json_data)
    return json_data

api.add_resource(RecursoPrivado, '/recurso')

我试过这个,但返回响应 [401]

url = 'http://localhost:5000/api/v1/recurso'
data={"Dato":"1"}
token="...p_GWs2XOAY" 
response=requests.get(url, data=data, headers={'Authorization':'JWT '+token})

有什么想法吗?

【问题讨论】:

  • 改用json=data。现在您正在发送表单编码的数据。
  • 顺便说一句,在 GET 请求中包含正文有点不标准。考虑改用POST 请求。
  • 该代码应该可以正常工作,但您需要将requests.post 更改为requests.get。 (我想该工具弄错了,因为包含带有GET 请求的请求正文是非标准的。)但是您尝试了我的建议吗?这似乎更简单。
  • 对于那些感到困惑的人,我之前的评论是对已被删除的评论的回应。 :-)
  • 后悔删了,我发布的更清楚了

标签: json flask request jwt restful-authentication


【解决方案1】:
response = requests.get(url, data=data, headers={'Authorization': 'JWT '+token})

应该是这样的:

response = requests.get(url, json=data, headers={'Authorization': 'JWT '+token})

您当前发送的是表单编码数据,而不是 JSON 编码数据。

【讨论】:

    猜你喜欢
    • 2018-04-06
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2023-03-14
    • 2018-07-05
    • 2013-06-22
    相关资源
    最近更新 更多