Ana içeriğe geç

Global Dependencies

🌐 Yapay Zekâ ve İnsanlar Tarafından Çeviri

Bu çeviri, insanlar tarafından yönlendirilen bir yapay zekâ ile oluşturuldu. 🤝

Orijinal anlamın yanlış anlaşılması ya da kulağa doğal gelmeme gibi hatalar içerebilir. 🤖

Yapay zekâyı daha iyi yönlendirmemize yardımcı olarak bu çeviriyi iyileştirebilirsiniz.

İngilizce sürüm

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.