Nest Router 🚦
Router Module For Nestjs Framework
Quick Overview
RouterModule
helps you organize your routes and lets you create a routes tree.
How ?
Every module could have a path property. That path will be a prefix for all controllers in this module. If that module has a parent, it will be a child of it and again all controllers in this child module will be prefixed by parent module prefix
+ this module prefix
see issue #255 .
Install
IMPORTANT: you need Nest > v4.5.10+
npm install nest-router --save
OR
yarn add nest-router
Setup
See how easy it is to set up.
... //imports;
👍 TIP: Keep all of your routes in a separate file like
routes.ts
In this example, all the controllers in NinjaModule
will be prefixed by /ninja
and it
has two childs, CatsModule
and DogsModule
.
Will the controllers of CatsModule
be prefixed by /cats
? NO!! 😮
The CatsModule
is a child of NinjaModule
so it will be prefixed by /ninja/cats/
instead.
And so will DogsModule
.
See examples folder for more information.
Example Folder Project Structure
.├── app.module.ts├── cats│ ├── cats.controller.ts│ ├── cats.module.ts│ └── ketty.controller.ts├── dogs│ ├── dogs.controller.ts│ ├── dogs.module.ts│ └── puppy.controller.ts├── main.ts└── ninja ├── katana.controller.ts ├── ninja.controller.ts └── ninja.module.ts
And here is a simple, nice route tree of example
folder:
ninja ├── / ├── /katana ├── cats │ ├── / │ └── /ketty ├── dogs ├── / └── /puppy
Nice!
Resolve Full Controller Path:
Nestjs dosen't resolve or take into account MODULE_PATH
metadata when it is coming to resolve Controller path in Middlewear resolver for example, so that i introduced a new fancy method RouterModule#resolvePath
that will resolve the full path of any controller so instead of doing so:
consumer.applysomeMiddleware.forRoutesSomeController;
you should do
consumer.applysomeMiddleware.forRoutesRouterModule.resolvePathSomeController;
see #32 for more information about this.
CHANGELOG
See CHANGELOG for more information.
Contributing
You are welcome to contribute to this project, just open a PR.
Authors
- Shady Khalifa - Initial work
See also the list of contributors who participated in this project.
License
This project is licensed under the MIT License - see the LICENSE.md file for details.