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
from nexy.core.models import NexyConfigModelfrom src.apps.app_module import AppModule class NexyConfig(NexyConfigModel): useRouter = AppModuleÉcrire un contrôleur
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
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 :
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
- Injection de dépendances : services et scopes
- Gardes et métadonnées : protéger et documenter les itinéraires
- Routage : le routeur basé sur les fichiers
- Configuration : toutes les options, y compris
useRouter