fastapi查询参数
时间: 2025-03-13 16:05:56 浏览: 31
### 定义和使用查询参数
在 FastAPI 应用中,可以通过简单的方式定义并处理查询参数。当创建路径操作函数时,在函数签名中声明期望接收的查询参数名称即可[^1]。
对于基本类型的查询参数,只需按照如下方式编写:
```python
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
async def read_items(q: str | None = Query(default=None)):
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results
```
上述代码展示了如何接受可选字符串形式的查询参数 `q` 。如果请求包含了这个参数,则会将其加入返回的结果字典里;如果没有提供此参数,默认情况下不会影响其他逻辑执行流程。
为了使 API 更加健壮,可以利用 Pydantic 提供的数据验证功能来增强对输入数据的要求。比如设置默认值、限定长度范围或者强制必填等约束条件[^3]:
```python
from typing import Optional
from pydantic import BaseModel, Field
class ItemQuery(BaseModel):
q: Optional[str] = Field(
title="The query string",
max_length=50,
description="A query parameter used to filter items."
)
@app.get("/items/with_validation")
def get_item(item_query: ItemQuery):
return item_query.dict()
```
这里定义了一个名为 `ItemQuery` 的类继承自 `BaseModel` ,并通过 `Field()` 方法指定了关于字段 `q` 的额外元信息以及一些限制规则。之后可以在路由处理器内部直接作为依赖注入项传入实例对象来进行解析与校验工作。
#### 支持列表型查询参数
有时可能希望允许客户端传递多个相同名字的查询参数值形成数组结构。这同样很容易实现:
```python
from typing import List
@app.get("/items/multi_q")
async def multi_qs(queries: List[str] = Query([])):
query_items = {"queries": queries}
return query_items
```
这段代码片段表明了怎样让应用程序能够理解像 `/items/multi_q?q=item1&q=item2` 这样的 URL 并正确地收集所有的 `q` 参数到一个列表里面去。
阅读全文
相关推荐


















