flask-apispec实现官方示例时GET请求query参数未填充到kwargs
问题根源
你使用的webargs v6+版本中,use_kwargs 装饰器默认只会解析请求体中的JSON数据,而你发起的是GET请求,参数放在查询字符串(query string)中,不在默认解析的位置范围内,所以解析不到参数,kwargs自然为空。
解决方案
给use_kwargs装饰器加上location参数指定解析位置为查询参数即可,修改后的服务端代码如下:
import flask from flask_apispec import use_kwargs from webargs import fields app = flask.Flask(__name__) @app.route('/pets', methods=["GET"]) @use_kwargs({'species': fields.Str()}, location='query') # 新增location参数指定解析位置 def list_pets(**kwargs): assert False, kwargs # 此时可以正常拿到{'species': 'cat'} if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)
常用location取值说明
location='json':默认值,解析请求体JSON参数,适配POST/PUT等提交JSON数据的场景location='query':解析URL查询参数,适配GET请求场景location='form':解析表单提交参数location='files':解析上传的文件参数
内容的提问来源于stack exchange,提问作者Ian Fiddes
相关产品推荐
相关产品推荐

