from typing import Union
from fastapi import Depends, FastAPI
app = FastAPI()
'''
嵌套注入
- 路径函数get_name需要的形参`username_or_nickname`有依赖条件,所以FastAPI会调用 `username_or_nickname_extractor`
- 执行`username_or_nickname_extractor`的时候,发现它也有依赖条件,所以FastAPI会调用 `username_extractor`
- 按照这个顺序,依次获取每个有依赖条件的参数的结果。最终,在路径函数内获取最终的结果。
'''
def username_extractor(username: Union[str, None] = None):
return username
def username_or_nickname_extractor(
username: str = Depends(username_extractor),
nickname: Union[str, None] = None,
):
if not username:
return nickname
return username
@app.get("/name")
def get_name(username_or_nickname: str = Depends(username_or_nickname_extractor)):
return {"username_or_nickname": username_or_nickname}
标签:username,extractor,None,return,FastAPI,31,嵌套,nickname
From: https://www.cnblogs.com/leoshi/p/17259467.html