fastapi参数说明
时间: 2025-03-05 18:49:00 浏览: 34
### FastAPI 中的参数处理
FastAPI 提供了强大的依赖注入系统来处理函数参数,使得定义和验证请求中的数据变得简单而直观。当创建路径操作函数时,可以声明多种类型的参数。
#### 路径参数
对于 URL 中固定的路径部分,可以直接通过函数形参获取对应的值[^1]:
```python
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
```
在这个例子中,`{item_id}` 是路径的一部分,并被作为整数传递给 `read_item()` 函数。
#### 查询参数
查询字符串允许客户端发送额外的信息到服务器端。这些可以通过简单的添加默认带有 None 的可选参数实现:
```python
from typing import Union
from fastapi import FastAPI
app = FastAPI()
@app.get("/search/")
async def search_items(q: Union[str, None] = None):
results = {"items": [{"id": "foo"}, {"id": "bar"}]}
if q:
results.update({"q": q})
return results
```
这里展示了如何接收名为 `q` 的查询参数并对其进行条件判断。
#### 请求体参数 (Body Parameters)
为了接受 JSON 数据或其他复杂结构的数据,在 Pydantic 模型的帮助下可以从 HTTP 请求正文中提取信息:
```python
from pydantic import BaseModel
from fastapi import FastAPI
class Item(BaseModel):
name: str
description: Union[str, None] = None
price: float
tax: Union[float, None] = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
```
上述代码片段显示了一个 POST 方法的例子,它期望接收到一个符合 `Item` 类型的对象作为输入。
#### 组合使用不同类型的参数
实际应用中经常需要混合使用以上提到的各种形式的参数。这同样可以在同一个路径操作函数内完成,只需按照需求组合即可。
```python
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Union
app = FastAPI()
class User(BaseModel):
username: str
full_name: Union[str, None] = None
@app.put("/users/{user_id}")
async def update_user(user_id: int, user: User, q: Union[str, None] = None):
result = {"user_id": user_id, **user.dict()}
if q:
result.update({"q": q})
return result
```
此段程序说明了在一个 PUT 请求里同时利用路径参数 (`user_id`)、请求体参数 (`User`) 和查询参数 (`q`) 来更新用户的资料。
阅读全文
相关推荐


















