Flask Restful中GET请求参数解析失败问题求助
解决Flask-RESTful GET请求参数解析400错误
你的问题根源在于reqparse.RequestParser默认会从请求的JSON请求体中解析参数,但GET请求的参数是通过URL的query string(即?后拼接的内容)传递的,导致解析失败返回400错误。
解决方案
在初始化RequestParser时指定location='args',或者在add_argument方法中单独指定该参数,让解析器从URL的query string中读取参数。
修改后的代码示例
方法1:全局指定解析位置
from flask_restful import Resource, reqparse class View_Result(Resource): def get(self): parser = reqparse.RequestParser(location='args') parser.add_argument('aid', type=str) print('Here 1') data = parser.parse_args() print('Here 2') return data # 可选:返回解析结果用于测试
方法2:为单个参数指定解析位置
from flask_restful import Resource, reqparse class View_Result(Resource): def get(self): parser = reqparse.RequestParser() parser.add_argument('aid', type=str, location='args') print('Here 1') data = parser.parse_args() print('Here 2') return data
原理说明
指定location='args'后,解析器会从URL的查询参数中读取aid的值,而非尝试解析JSON请求体,完美适配GET请求的参数传递方式,同时也会消除错误提示中关于Content-Type的问题。
内容的提问来源于stack exchange,提问作者Amit Pathak
相关产品推荐
相关产品推荐

