DocsRouteur modulaire

Routage modulaire

Le routage modulaire utilise des classes avec des décorateurs au lieu de fichiers sous src/routes/ : les contrôleurs gèrent les requêtes, les modules les regroupent et les fournisseurs sont injectés. Montez le APIRouter résultant avec useRouter dans nexyconfig.py.

Avant de commencer : un projet Nexy et une page de travail. Le routeur modulaire remplace celui basé sur des fichiers, alors lisez d'abord Routage si vous n'avez pas encore choisi de routeur.

Pages Ce qu'il couvre
Cette page Monter un module, écrire un contrôleur, regrouper des contrôleurs
Injection de dépendances @Injectable, les scopes, le conteneur
Gardes et métadonnées @UseGuard, @Middleware, @UseRoute, @UseResponse
Nexy et NestJS Qu'est-ce qui correspond à NestJS et qu'est-ce qui ne correspond pas

Configurer le routeur

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

Écrire un contrôleur

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

Les méthodes sont mises en correspondance par nom, sans tenir compte de la casse : get, post, put, patch, delete, options, head, trace.

Un contrôleur déclare un gestionnaire par méthode HTTP ; un doublon apparaît au démarrage. Le premier argument de @Controller("/users") est le chemin sur lequel chaque gestionnaire répond, /users/. async def SOCKET(...) sur un contrôleur enregistre un WebSocket sur le même chemin.

Regrouper les contrôleurs dans un module

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

@Module(prefix="/api") renvoie un APIRouter. controllers est requis ; providers, imports et exports sont facultatifs. Les modules importés sont montés en tant que sous-routeurs et leurs fournisseurs exportés sont résolus au démarrage.

Vues depuis un contrôleur

Un contrôleur peut renvoyer une page. useViews restitue une vue .nexy ; imbriquez-les les uns dans les autres pour les envelopper dans une mise en page :

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

Voir Mise en page.

Exemple

Voir examples/Modular/api/minimal/.

Prochaines étapes

Modifier sur GitHub

Entrée ouvre le résultat, Échap ferme.