ДокументацияМодульный маршрутизатор

Модульная маршрутизация

Модульная маршрутизация использует классы с декораторами вместо файлов в src/routes/: контроллеры обрабатывают запросы, модули группируют их, а провайдеры внедряются. Смонтируйте полученный APIRouter с useRouter в nexyconfig.py.

Прежде чем начать: проект Nexy и одна рабочая страница. Модульный маршрутизатор заменяет файловый маршрутизатор, поэтому сначала прочтите Маршрутизация, если вы еще не выбрали маршрутизатор.

Страница Что он охватывает
Эта страница Монтируем модуль, пишем контроллер, группируем контроллеры
Внедрение зависимостей @Injectable, области видимости, контейнер
Охранники и метаданные @UseGuard, @Middleware, @UseRoute, @UseResponse
Некси и NestJS Что соответствует NestJS, а что нет

Настройте маршрутизатор

nexyconfig.py
from nexy.core.models import NexyConfigModelfrom src.apps.app_module import AppModule  class NexyConfig(NexyConfigModel):    useRouter = AppModule

Напишите контроллер

src/apps/app_controller.py
from nexy.decorators import Controllerfrom nexy.core.types import JsonResponse  @Controller()class AppController:    async def get(self) -> JsonResponse:        return {"message": "Welcome to Nexy Modular API"}

Методы сопоставляются по имени без учета регистра: get, post, put, patch, delete, options, head, trace.

Контроллер объявляет один обработчик для каждого метода HTTP; дубликат поднимается при запуске. Первый аргумент @Controller("/users") - это путь, по которому отвечает каждый обработчик, /users/. async def SOCKET(...) на контроллере регистрирует WebSocket по тому же пути.

Группа контроллеров в модуле

src/apps/app_module.py
from nexy.decorators import Modulefrom .app_controller import AppController  @Module()class AppModule:    controllers = [AppController]

@Module(prefix="/api") возвращает APIRouter. controllers требуется; providers, imports и exports являются необязательными. Импортированные модули монтируются как подмаршрутизаторы, а их экспортированные поставщики разрешаются при запуске.

Виды с контроллера

Контроллер может вернуть страницу. useViews отображает представление .nexy; вложите одно в другое, чтобы обернуть его в макет:

src/apps/app_controller.py
from nexy.decorators import Controllerfrom nexy.hooks import useViews  @Controller()class AppController:    async def get(self):        return useViews("src/apps/layout.nexy", context={            "children": useViews("src/apps/app_view.nexy"),        })

См. Макеты.

Пример

См. examples/Modular/api/minimal/.

Следующие шаги

Изменить на GitHub

Enter открывает результат, Esc закрывает.