You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 23:45:10