依赖注入
from typing import Annotated
from fastapi import FastAPI, Query, Depends
from pydantic import BaseModel
import uvicorn
app = FastAPI()
class User(BaseModel):
id: int
name: str
age: int
gender: str
def get_current_user() ->User:
return User(id=0,name="depends_test",age=0,gender= "female")
@app.get("/items")
def get_items(cur_usr:User = Depends(get_current_user)):
return {"usr_info":cur_usr,"items":["item1","item2","item3","item4"]}
if __name__== "__main__":
uvicorn.run(app,port=8888)
- 通过依赖注入功能,FastAPI允许不同的路径操作函数复用代码逻辑
- 常见的
page_number
和page_size
这种API参数,可以使用依赖注入功能把它们封装在一个函数中,从而避免在多个操作函数中重复编写相同的逻辑 - 权限校验函数也可使用依赖注入功能实现