fastAPI请求参数
时间: 2025-05-28 16:42:38 浏览: 18
### FastAPI 请求参数使用指南
在 FastAPI 中,请求参数分为多种类型,包括查询参数、路径参数、请求体参数以及表单数据等。以下是关于这些参数的具体说明及其常见问题解决方法。
#### 查询参数
查询参数通常用于过滤或分页等功能。它们可以通过函数签名中的默认值来定义为可选或者必填项。如果未提供任何默认值,则该参数会被视为必需[^1]。
```python
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(q: str | None = None):
if q:
return {"q": q}
return {"message": "No query parameter provided"}
```
#### 路径参数
路径参数是指 URL 的一部分作为输入传递给路由处理程序的数据。FastAPI 支持自动类型转换和校验功能,能够确保传入的值符合预期类型[^2]。
```python
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
```
#### 请求体参数
对于复杂的结构化数据(如 JSON),可以利用 Pydantic 模型来自动生成解析逻辑并实施字段级约束条件检查[^4]。
```python
from pydantic import BaseModel, Field
class Item(BaseModel):
name: str = Field(..., min_length=3)
price: float = Field(..., gt=0)
@app.post("/items/")
async def create_item(item: Item):
return item.dict()
```
#### 表单数据与文件上传支持
当涉及到 HTML 表单提交时,需特别注意区分 `application/x-www-form-urlencoded` 和 multipart/form-data 编码方式下的不同处理手法[^5]。
```python
from fastapi import File, UploadFile
@app.post("/uploadfile/")
async def upload_file(file: UploadFile = File(...)):
contents = await file.read() # Read the content of the uploaded file.
return {"filename": file.filename, "content_type": file.content_type}
```
#### 自动依赖注入系统
FastAPI 提供了一个强大的依赖注入框架,允许开发者轻松实现跨层资源共享和服务实例管理而无需手动编写繁琐代码片段[^3]。
---
### 常见问题解答
1. **为什么我的浮点数总是被截断成整数?**
需确认是否正确设置了相应变量类型的注解;例如应采用 `float` 类型而非隐式推导为 `int`.
2. **如何捕获非法输入引发的异常并向客户端反馈更友好的消息?**
可借助于自定义 Exception Handlers 来完成此目标.
3. **能否在一个单一端点同时接收多个来源的数据比如 Query String 加 Body Payload?**
是完全可以做到这一点只需按照常规语法分别声明各部分所需参数即可.
---
阅读全文
相关推荐


















