DocsEnrutador modular

Enrutamiento modular

El enrutamiento modular utiliza clases con decoradores en lugar de archivos en src/routes/: los controladores manejan las solicitudes, los módulos las agrupan y se inyectan los proveedores. Monte el APIRouter resultante con useRouter en nexyconfig.py.

Antes de comenzar: un proyecto Nexy y una página de trabajo. El enrutador modular reemplaza al basado en archivos, así que lea Enrutamiento primero si aún no ha elegido un enrutador.

Página lo que cubre
esta pagina Montar un módulo, escribir un controlador, controladores de grupo
Inyección de dependencia @Injectable, ámbitos, el contenedor
Guardias y metadatos @UseGuard, @Middleware, @UseRoute, @UseResponse
Nexy y NestJS Qué coincide con NestJS y qué no

Configurar el enrutador

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

escribir un controlador

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"}

Los métodos se comparan por nombre, sin distinguir entre mayúsculas y minúsculas: get, post, put, patch, delete, options, head, trace.

Un controlador declara un controlador por método HTTP; un duplicado surge al inicio. El primer argumento de @Controller("/users") es la ruta por la que responde cada controlador, /users/. async def SOCKET(...) en un controlador registra un WebSocket en la misma ruta.

Controladores de grupo en un módulo

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

@Module(prefix="/api") devuelve un APIRouter. controllers es obligatorio; providers, imports y exports son ​​opcionales. Los módulos importados se montan como subrutadores y sus proveedores exportados se resuelven al inicio.

Vistas desde un controlador

Un controlador puede devolver una página. useViews representa una vista .nexy; anida uno dentro de otro para envolverlo en un diseño:

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"),        })

Consulte Diseños.

Ejemplo

Véase examples/Modular/api/minimal/.

Próximos pasos

Editar en GitHub

Enter abre el resultado, Esc lo cierra.