Flask-RESTful调用parse_args()返回JSON解码失败问题求助
问题原因及解决方案
问题原因
reqparse.RequestParser默认会尝试从JSON请求体中解析参数,但你发起的是GET请求,GET请求不存在请求体,调用parse_args()时会因无法解析不存在的JSON内容,抛出"Failed to decode JSON object: None"错误。
解决方法
在添加参数时,通过location='args'指定从URL查询字符串中获取参数,修改后的代码如下:
class Ping(Resource): def get(self): parser = reqparse.RequestParser() parser.add_argument("lang", location='args') # 指定参数来源为URL查询串 args = parser.parse_args() return { "message": "any message", "lang": args.get("lang") # 可正常获取URL中的lang参数 }, 200
如果你的接口大多是GET请求,也可以初始化Parser时直接指定全局默认位置:
parser = reqparse.RequestParser(location='args')
额外说明
Flask-RESTful的reqparse已被官方标记为废弃,官方推荐使用marshmallow库进行参数校验与解析,但如果需要继续使用reqparse,确保指定正确的参数来源即可。
内容的提问来源于stack exchange,提问作者Ethan
相关产品推荐
相关产品推荐

