전역 의존성¶
몇몇 유형의 애플리케이션에서는 애플리케이션 전체에 의존성을 추가하고 싶을 수 있습니다.
경로 처리 데코레이터에 dependencies 추가하기와 유사한 방법으로 FastAPI 애플리케케이션에 그것들을 추가할 수 있습니다.
그런 경우에, 애플리케이션의 모든 경로 처리에 적용될 것입니다:
from typing import Annotated
from fastapi import Depends, FastAPI, Header, HTTPException
async def verify_token(x_token: Annotated[str, Header()]):
if x_token != "fake-super-secret-token":
raise HTTPException(status_code=400, detail="X-Token header invalid")
async def verify_key(x_key: Annotated[str, Header()]):
if x_key != "fake-super-secret-key":
raise HTTPException(status_code=400, detail="X-Key header invalid")
return x_key
app = FastAPI(dependencies=[Depends(verify_token), Depends(verify_key)])
@app.get("/items/")
async def read_items():
return [{"item": "Portal Gun"}, {"item": "Plumbus"}]
@app.get("/users/")
async def read_users():
return [{"username": "Rick"}, {"username": "Morty"}]
🤓 Other versions and variants
Tip
Prefer to use the Annotated version if possible.
from fastapi import Depends, FastAPI, Header, HTTPException
async def verify_token(x_token: str = Header()):
if x_token != "fake-super-secret-token":
raise HTTPException(status_code=400, detail="X-Token header invalid")
async def verify_key(x_key: str = Header()):
if x_key != "fake-super-secret-key":
raise HTTPException(status_code=400, detail="X-Key header invalid")
return x_key
app = FastAPI(dependencies=[Depends(verify_token), Depends(verify_key)])
@app.get("/items/")
async def read_items():
return [{"item": "Portal Gun"}, {"item": "Plumbus"}]
@app.get("/users/")
async def read_users():
return [{"username": "Rick"}, {"username": "Morty"}]
그리고 경로 처리 데코레이터에 dependencies 추가하기 섹션의 모든 아이디어는 여전히 적용되지만, 이 경우에는 앱의 모든 경로 처리에 적용됩니다.
경로 처리 그룹에 대한 의존성¶
나중에 여러 파일을 포함할 수도 있는 더 큰 애플리케이션을 구조화하는 법(더 큰 애플리케이션 - 여러 파일들)을 읽을 때, 경로 처리 그룹에 대한 단일 dependencies 매개변수를 선언하는 법을 배우게 될 것입니다.