请求参数
路径参数
使用路径参数可以在 URL 中传递参数,例如 /items/{item_id}:
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}
查询参数
使用查询参数可以通过 URL 中的查询字符串传递参数,例如 /items/?limit=10:
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
def read_items(limit: int = 10):
return {"limit": limit}
请求体参数
可以使用请求体参数接收 POST 或 PUT 请求中的数据。FastAPI 支持 JSON 和表单数据:
JSON 请求体
from fastapi import FastAPI, HTTPException
app = FastAPI()
class Item:
def __init__(self, name: str, description: str = None):
self.name = name
self.description = description
@app.post("/items/")
def create_item(item: Item):
# item 参数将从请求体中自动解析为 JSON 对象
return {"name": item.name, "description": item.description}
表单数据
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login/")
def login(username: str = Form(...), password: str = Form(...)):
return {"username": username, "password": password}
响应
FastAPI 会根据函数的返回类型自动生成响应文档,并且会验证响应的结构。以下是一些响应的例子:
返回 JSON 数据
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id, "message": "Item found"}
返回自定义模型
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: str = None
@app.post("/items/")
def create_item(item: Item):
return {"name": item.name, "description": item.description}
返回状态码
你可以使用 JSONResponse 来返回自定义状态码:
from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int):
if item_id == 42:
return JSONResponse(content={"message": "Item not found"}, status_code=404)
return {"item_id": item_id, "message": "Item found"}
这些示例覆盖了 FastAPI 中常见的请求和响应场景。使用这些基本概念,你可以构建出更复杂和功能强大的 API。
转载请注明出处:http://www.zyzy.cn/article/detail/13931/FastAPI