FastAPI 参数别名与自动文档生成完全指南:从基础到高级实战 🚀
title: FastAPI 参数别名与自动文档生成完全指南:从基础到高级实战 🚀
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
async def read_items(q: str = Query(None, alias="query")):
return {"q": q}
@app.get("/users/")
async def read_users(user_id: str = Query(None, alias="id")):
return {"user_id": user_id}
curl "http://localhost:8000/items/?query=test"
from pydantic import Field
@app.get("/validate-alias/")
async def validate_alias(q: str = Query(..., alias="query", min_length=3)):
return {"q": q}
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items():
return {"message": "Hello World"}
app = FastAPI(docs_url="/api/docs", redoc_url="/api/redoc")
@app.get("/users/")
async def read_users():
return {"message": "Hello Users"}
@app.get("/items/", summary="获取项目列表", description="返回所有项目的列表")
async def read_items():
return {"message": "Hello World"}
@app.get("/items/", tags=["items"])
async def read_items():
return {"message": "Hello World"}
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.get("/secure/", security=[{"oauth2": ["read"]}])
async def read_secure(token: str = Depends(oauth2_scheme)):
return {"token": token}
@app.get("/items/", responses={200: {"description": "Success"}, 404: {"description": "Not Found"}})
async def read_items():
return {"message": "Hello World"}
from fastapi import Query
from pydantic import Field
@app.get("/validate-alias/")
async def validate_alias(q: str = Query(..., alias="query", min_length=3)):
return {"q": q}
app = FastAPI(docs_url="/api/docs", redoc_url="/api/redoc")
| 错误代码 | 典型触发场景 | 解决方案 |
|---|---|---|
| 422 | 类型转换失败/校验不通过 | 检查参数定义的校验规则 |
| 404 | 文档路径配置错误 | 检查 docs_url 和 redoc_url 的配置 |
| 500 | 未捕获的文档生成异常 | 检查 API 接口的定义和文档生成逻辑 |
| 401 | 未授权访问 | 检查认证和授权逻辑 |
@app.get("/items/", tags=["items"])
async def read_items():
return {"message": "Hello World"}
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.get("/secure/", security=[{"oauth2": ["read"]}])
async def read_secure(token: str = Depends(oauth2_scheme)):
return {"token": token}
curl "http://localhost:8000/items/?query=test"


评论
发表评论