Атрибут router
Атрибут router доступен у каждого экземпляра
класса FastAPI и представляет собой объект
APIRouter. В этот роутер FastAPI автоматически
добавляет все маршруты, которые регистрируются через
декораторы get, post, put,
api_route и другие. Через атрибут router
можно напрямую управлять маршрутами: перебирать их,
добавлять свои, подключать вложенные роутеры и проверять
их свойства.
Синтаксис
app.router
Пример
Давайте посмотрим, какие маршруты FastAPI складывает
в атрибут router после регистрации обработчика:
from fastapi import FastAPI
app = FastAPI()
@app.get('/')
def index():
return {'text': 'hello'}
for route in app.router.routes:
print(route.path, route.methods)
Результат выполнения кода:
/ {'GET'}
/openapi.json {'GET'}
/docs {'GET'}
/docs/oauth2-redirect {'GET'}
/redoc {'GET'}
Пример
Атрибут router можно использовать, чтобы добавить
маршрут без декоратора, напрямую через метод
add_api_route:
from fastapi import FastAPI
app = FastAPI()
def hello():
return {'text': 'hello'}
app.router.add_api_route('/hello', hello, methods=['GET'])
Результат выполнения кода для адреса /hello:
{"text": "hello"}
Пример
Давайте подключим отдельный роутер к приложению
через атрибут router и метод
include_router:
from fastapi import FastAPI, APIRouter
app = FastAPI()
router = APIRouter()
@router.get('/user')
def user():
return {'name': 'abcde'}
app.router.include_router(router)
Результат выполнения кода для адреса /user:
{"name": "abcde"}
Смотрите также
-
класс
FastAPI,
которому принадлежит атрибутrouter -
метод
include_router,
который подключает роутер к приложению -
метод
add_api_route,
который добавляет маршрут напрямую в роутер -
метод
api_route,
который регистрирует обработчик через декоратор