Рубрики
Без рубрики

Fastapi верхнего уровня зависимости

Эта статья живет в: Dev.to Medium GitHub Intro Fastapi версия 0.62.0 поставляется с GL … С тегом Python, News, Tulciory.

Эта статья живет в:

вступление

Fastapi версия 0,62,0 Поставляется с глобальными зависимостями, которые вы можете применить к целому приложению.

А также зависимости верхнего уровня, теги и другие параметры для Апирутер S, что раньше было доступно только на app.include_router () Анкет

Это облегчает размещение конфигураций и зависимостей (например, для аутентификации), связанных с группой Путь операции более близко вместе. 🔒

Начнем с проверки Апирутер

Включите маршрутизатор

Представьте, что у вас был файл users.py с:

from fastapi import APIRouter

router = APIRouter()


@router.get("/users/")
def read_users():
    return ["rick", "morty"]

А теперь скажем, что вы хотите включить его в main.py Файл с помощью:

from fastapi import FastAPI, Depends
from . import users
from .dependencies import get_query_token

app = FastAPI()

app.include_router(
    users.router,
    tags=["users"],
    dependencies=[Depends(get_query_token)]
)


@app.get("/")
def main():
    return {"message": "Hello World"}

В этом примере вы применяете тег Пользователи ко всему Путешествие операции в users.py . И вы также применяете зависимость get_query_token всем из них.

Это работает, и это был единственный/основной способ сделать это до версии 0.62.0.

Но не так уж и здорово, что тег и зависимость в основном связаны с users.py , не main.py . Но этот код должен был жить в main.py , вместо того, чтобы быть ближе к тому, с чем это связано.

Апирутер зависимости и тегов верхнего уровня

Теперь с версией Fastapi 0,62,0 , вы можете объявить зависимости, теги и другие в верхнем уровне в Апирутер напрямую.

Итак, новый router.py теперь может выглядеть как:

from fastapi import APIRouter, Depends
from .dependencies import get_query_token

router = APIRouter(
    tags=["users"],
    dependencies=[Depends(get_query_token)]
)


@router.get("/users/")
def read_users():
    return ["rick", "morty"]

… обратите внимание на теги и зависимости в Апирутер Теперь они могут жить ближе к своему коду! 🎉

И main.py было бы просто:

from fastapi import FastAPI
from . import users

app = FastAPI()

app.include_router(
    users.router,
)


@app.get("/")
def main():
    return {"message": "Hello World"}

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

Точно так же вы теперь можете объявить зависимости это относится к все Путь операции в FASTAPI заявление:

from fastapi import FastAPI, Depends
from .dependencies import get_query_token

app = FastAPI(
    dependencies=[Depends(get_query_token)]
)

@app.get("/")
def main():
    return {"message": "Hello World"}

Советы

Некоторые советы по принятию конвенции:

  • По умолчанию установите все эти конфигурации в Apirouter () Анкет
  • Попробуйте только установить их в app.include_router () Если вы хотите переопределить некоторые значения по умолчанию, которые не могут (или не должны) быть установлены в Апирутер напрямую.
  • Установить их в FASTAPI () Только когда вы хотите, чтобы они применили ко всему, например, Некоторая аутентификация по умолчанию для простого приложения.

Учить больше

Вы можете прочитать больше о Глобальные зависимости Анкет

И о Апирутер верхний уровень зависимости , теги и другие Анкет

Если вы не хотите пропустить другие новости, вы можете подписаться на FASTAPI и друзья Официальный информационный бюллетень Анкет 🎉

Обо мне

Привет! 👋 Я Тяноголо (Себастьян Рамирес) Анкет

Вы можете следовать за мной, связаться со мной, посмотреть, что я делаю, или использовать мой код с открытым исходным исходным кодом:

Оригинал: “https://dev.to/tiangolo/fastapi-top-level-dependencies-8ah”