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

FastAPI中如何将字典作为GET请求的查询参数传递

在FastAPI的GET请求中传递字典作为查询参数

GET请求的查询参数本质就是键值对集合,你可以把字典直接拆解为对应参数传递,下面分服务端接收和客户端调用两部分说明:

服务端接收逻辑

方式1:直接定义单个查询参数

如果字典的键是固定的,直接在路由函数里声明对应参数即可:

from fastapi import FastAPI

app = FastAPI()

@app.get("/login")
def login(userId: str, password: str):
    # 直接获取到字典拆分后的参数值
    return {"received_userId": userId, "received_password": password}

方式2:用Pydantic模型统一接收(适配复杂结构)

如果字典结构更复杂,或者想统一管理参数规则,可以结合BaseModel和Depends解析:

from fastapi import FastAPI, Depends
from pydantic import BaseModel

app = FastAPI()

class LoginParams(BaseModel):
    userId: str
    password: str

@app.get("/login")
def login(params: LoginParams = Depends()):
    # params是解析后的模型实例,可通过dict()转成字典格式
    return {"received_params": params.dict()}

客户端调用(解决Requests返回字符串问题)

你提到的Requests返回字符串,是因为没有对响应做JSON解析。实际上Requests的get方法支持直接传入字典作为params参数,它会自动转成URL查询参数,而响应结果通过.json()方法就能转成字典。

示例代码:

import requests

login_data = {"userId": "bob", "password": "12345"}

# 直接将字典传给params参数
response = requests.get("http://localhost:8000/login", params=login_data)

# 把响应的JSON字符串转成字典
result_dict = response.json()
print(result_dict)

如果是FastAPI服务内部调用其他接口,推荐用httpx库,用法类似:

import httpx

async def call_login_api():
    login_data = {"userId": "bob", "password": "12345"}
    async with httpx.AsyncClient() as client:
        response = await client.get("http://localhost:8000/login", params=login_data)
        result_dict = response.json()
        return result_dict

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:06:33