【发布时间】:2018-04-06 20:36:09
【问题描述】:
我正在使用Flask-restful 和Flask-jwt 开发一个RESTful API。当我对任何端点使用 @jwt_required() 并发送包含 JSON 数据的请求时,我没有收到我指定的错误消息 JSON。如果我删除 JSON 数据,则请求得到正确处理。
代码如下:
@jwt_required()
def put(self, user_id):
user = UserModel.find_by_id(user_id)
if user is None:
return {"message": "User not found!"}, 404
这是邮递员的请求:
PUT /user/2 HTTP/1.1
Host: 127.0.0.1:5000
Content-Type: application/json
Authorization: JWT xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Cache-Control: no-cache
{
"backdrop_image": "Sora"
}
还有服务器日志:
2017-10-25 18:31:06,256 INFO sqlalchemy.engine.base.Engine (2, 1, 0)
2017-10-25 18:31:06,259 INFO sqlalchemy.engine.base.Engine ROLLBACK
127.0.0.1 - - [25/Oct/2017 18:31:06] "PUT /user/2 HTTP/1.1" 404 -
如果我删除 JSON:
PUT /user/2 HTTP/1.1
Host: 127.0.0.1:5000
Content-Type: application/json
Authorization: JWT xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Cache-Control: no-cache
我得到了预期的响应:
{
"message": "User not found!"
}
这里是被调用的方法:
@classmethod
def find_by_id(cls, _id):
return cls.query.filter_by(id = _id).first()
更新
我发现我收到了No handlers could be found for logger "flask_jwt" 的第一个请求
【问题讨论】:
-
能否提供一个示例flask文件进行调试?
-
你能评论
user = UserModel.find_by_id(user_id),然后再试一次,看看它是否有效?我刚刚创建了一个示例应用程序,我没有遇到这样的问题,所以很可能您在配置中也使用了其他东西 -
user在这两种情况下都是None,并且在这一行没有发生异常。此外,当我在此行之后打印任何字符串时,它会正常打印。仅当请求中有 JSON 数据时才会出现此问题 -
正如我所说,我创建了一个复制代码,它工作正常。所以你需要提供一个最小的 git repo 来重现问题
-
你用过智威汤逊吗?此请求需要 JWT 令牌。如果我删除 JWT,它可以正常工作。
标签: python flask flask-restful flask-jwt