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

如何让FastAPI的GET请求正确接收JSON格式查询参数?

解决FastAPI GET接口接收JSON查询参数的requests请求报错问题

问题原因

FastAPI接口要求q参数是合法的JSON格式字符串,但直接用requests传递字典类型参数时,requests会自动将字典拆解为q[key]=value这种键值对形式,并非FastAPI所需的完整JSON字符串,因此触发Invalid JSON错误。而浏览器中能正常运行,是因为你手动输入了转义后的标准JSON字符串作为查询参数值。

正确请求方式

先将JSON对象序列化为标准JSON字符串,再将该字符串作为q参数的值传递给接口。

代码示例

服务端代码(确认正确写法)

from fastapi import FastAPI, Query, Json

app = FastAPI()

@app.get("/items/")
async def read_items(q: Json[dict] = Query(..., description="JSON格式的查询参数")):
    return {"received_query": q}

客户端requests代码

import requests
import json

# 定义要传递的JSON数据
payload = {"product": "apple", "count": 5, "tags": ["fresh", "organic"]}
# 将数据序列化为标准JSON字符串
json_param = json.dumps(payload)

# 发送GET请求,把JSON字符串作为q参数的值
response = requests.get(
    "http://localhost:8000/items/",
    params={"q": json_param}
)

print(response.json())

注意事项

  • 必须使用json.dumps()生成标准JSON字符串,避免手动拼接导致的格式错误(比如引号未转义、结构不完整)。
  • 不要直接将字典传入params参数,否则requests会自动编码为多键值对,无法被FastAPI解析为JSON。

内容的提问来源于stack exchange,提问作者user11634

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:10:15