На данный момент все наши endpoint-ы находятся в файле `main.py` и никак логически не разделены между собой.
Создаём способ подключения endpoint-ов
- Создаём папку `api`
- В папке `api` создаём папку `example_router`
- В папке `example_router` создаём ещё одну папку `api`
- В папке `example_router/api` создаём файлы `__init__.py` и `v1.py`
- В папке `example_router` создаём файл `__init__.py`
Код
В файле `example_router/api/v1.py` пишем:
from fastapi import APIRouter
router = APIRouter()
@router.get('/test_from_example_router')
def return_test():
return {'message': 'ok'}
В файле `example_router/api/__init__.py` пишем:
from . import v1
В файле `example_router/__init__.py` пишем:
from fastapi import APIRouter
from . import api
router = APIRouter()
router.include_router(api.v1.router)
# add imports for v2, v3, v4 ...
В файле `main.py` прописываем:
from fastapi import FastAPI
import api.example_router
from settings import settings
application = FastAPI()
application.include_router(api.example_router.router)
Запускаем `python run_service.py` и видим наш Swagger
Чего же мы добились?
- Имея папку `example_router` мы храним всю логику и все endpoint-ы связанные только с этой папкой (приложением, router-ом)
- Внутри, мы имеем файл v1.py, но, если мы захотим резко переписать весь код, мы сможем создать v2.py, провести рефакторинг, и подключить внутри файла `example_router/__init__.py`
Любое последующее приложение, это просто копирование папки и изменение имени и логики. Все остальные моменты остаются едиными:
- Импортировать в `main.py`
import api.another_example
2. Подключить к application
application.include_router(api.another_example.router)
Домашнее задание
Создать новый router-ом с названием another_example и подключить его