Эта статья живет в:
вступление
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 и друзья Официальный информационный бюллетень Анкет 🎉
Обо мне
Привет! 👋 Я Тяноголо (Себастьян Рамирес) Анкет
Вы можете следовать за мной, связаться со мной, посмотреть, что я делаю, или использовать мой код с открытым исходным исходным кодом:
- GitHub: Tiangolo
- Twitter: Tiangolo
- LinkedIn: Tiangolo
- Dev: Tiangolo.to
- Середина: Tiangolo
- Интернет: tiangolo.com
Оригинал: “https://dev.to/tiangolo/fastapi-top-level-dependencies-8ah”