Spec-Zone.ru › FastAPI

Глобальные зависимости

Для некоторых типов приложений может потребоваться добавить зависимости для всего приложения.

Так же, как можно добавить 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"}]
🤓 Другие версии и варианты

Совет

По возможности предпочитайте версию Annotated.

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 для группы операций пути.

© 2018 Sebastián Ramírez
Licensed under the MIT License.
https://fastapi.tiangolo.com/tutorial/dependencies/global-dependencies/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API