fastapi 返回json
时间: 2025-01-07 09:57:59 浏览: 4
### 如何在 FastAPI 中返回 JSON 响应
为了确保 FastAPI 返回有效的 JSON 响应,可以利用 `fastapi` 库中的内置支持来处理 JSON 数据。当定义路径操作函数并指定其返回值时,FastAPI 自动会将其转换成 JSON 格式的 HTTP 响应。
对于简单的场景,在 Python 函数中直接返回字典或列表即可:
```python
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
```
上述代码展示了最基础的方式创建一个接收参数并返回 JSON 对象的接口[^1]。
如果需要更复杂的结构或是自定义状态码、头部信息等,则可以通过 `ResponseModel` 或者显式地使用 `JSONResponse` 类来进行控制:
```python
from fastapi import FastAPI, Response
from fastapi.responses import JSONResponse
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
app = FastAPI()
@app.post("/items/", response_model=Item)
async def create_item(item: Item):
json_compatible_item_data = item.dict()
return JSONResponse(content=json_compatible_item_data)
@app.put("/items/{item_id}", status_code=200)
async def update_item(item_id: int, item: Item):
updated_item = {"id": item_id, **item.dict()}
headers = {"X-Custom-Header": "CustomValue"}
return JSONResponse(status_code=200, content=updated_item, headers=headers)
```
这段例子说明了怎样通过 Pydantic 模型验证输入的数据,并且显示了如何设置特定的状态码以及额外的HTTP头字段。
阅读全文