Ana içeriğe geç

Global Dependencies

🌐 Translation by AI and humans

This translation was made by AI guided by humans. 🤝

It could have mistakes of misunderstanding the original meaning, or looking unnatural, etc. 🤖

You can improve this translation by helping us guide the AI LLM better.

English version

Bazı uygulama türlerinde, tüm uygulama için dependency eklemek isteyebilirsiniz.

dependencies'i path operation decorator'larına ekleyebildiğiniz gibi, FastAPI uygulamasına da ekleyebilirsiniz.

Bu durumda, uygulamadaki tüm path operation'lara uygulanırlar:

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"}]

Ve path operation decorator'larına dependencies ekleme bölümündeki tüm fikirler hâlâ geçerlidir; ancak bu sefer, uygulamadaki tüm path operation'lar için geçerli olur.

Path operations grupları için Dependencies

İleride, daha büyük uygulamaları nasıl yapılandıracağınızı (Bigger Applications - Multiple Files) okurken, muhtemelen birden fazla dosyayla birlikte, bir path operations grubu için tek bir dependencies parametresini nasıl tanımlayacağınızı öğreneceksiniz.