DokuModularer Router

Modulares Routing

Modulares Routing verwendet Klassen mit Dekoratoren anstelle von Dateien unter src/routes/: Controller verarbeiten Anfragen, Module gruppieren sie und Anbieter werden injiziert. Montieren Sie das resultierende APIRouter mit useRouter in nexyconfig.py.

Bevor Sie beginnen: ein Nexy-Projekt und eine Arbeitsseite. Der modulare Router ersetzt den dateibasierten Router. Lesen Sie daher zuerst Routing, wenn Sie sich noch nicht für einen Router entschieden haben.

Seite Was es abdeckt
Diese Seite Montieren Sie ein Modul, schreiben Sie einen Controller, gruppieren Sie Controller
Abhängigkeitsinjektion @Injectable, Bereiche, der Container
Guards und Metadaten @UseGuard, @Middleware, @UseRoute, @UseResponse
Nexy und NestJS Was passt zu NestJS und was nicht

Richten Sie den Router ein

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

Schreiben Sie einen Controller

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

Methoden werden nach Namen ohne Berücksichtigung der Groß- und Kleinschreibung abgeglichen: get, post, put, patch, delete, options, head, trace.

Ein Controller deklariert einen Handler pro HTTP-Methode. Beim Start wird ein Duplikat ausgelöst. Das erste Argument von @Controller("/users") ist der Pfad, auf dem jeder Handler antwortet, /users/. async def SOCKET(...) auf einem Controller registriert einen WebSocket auf demselben Pfad.

Gruppieren Sie Controller in einem Modul

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

@Module(prefix="/api") gibt ein APIRouter zurück. controllers ist erforderlich; providers, imports und exports sind optional. Importierte Module werden als Sub-Router gemountet und ihre exportierten Provider werden beim Start aufgelöst.

Ansichten von einem Controller

Ein Controller kann eine Seite zurückgeben. useViews rendert eine .nexy-Ansicht; verschachteln Sie sie ineinander, um sie in ein Layout einzubinden:

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

Siehe Layouts.

Beispiel

Siehe examples/Modular/api/minimal/.

Nächste Schritte

Auf GitHub bearbeiten

Enter öffnet das Ergebnis, Esc schließt.