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
from nexy.core.models import NexyConfigModelfrom src.apps.app_module import AppModule class NexyConfig(NexyConfigModel): useRouter = AppModuleSchreiben Sie einen Controller
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
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:
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
- Abhängigkeitsinjektion: Dienste und Bereiche
- Guards und Metadaten: Routen schützen und dokumentieren
- Routing: der dateibasierte Router
- Konfiguration: jede Option, einschließlich
useRouter