@finwo/router
v0.5.0
Published
TypeScript controller decorators
Downloads
21
Readme
@finwo/router
@finwo/router is a TypeScript decorator wrapper with pluggable routers, intended to make setting up a new api cleaner.
Installation
This package can not be used stand-alone and will need an adapter to hand off the controllers' routes to the actual router.
To start using @finwo/router, install the required packages via NPM:
npm install --save @finwo/router
This package makes use of decorators and decorator metadata using the reflect-metadata package, which in turn means this package is not compatible with TS > 5.
Don't forget to enable emitting decorator metadata in your TypeScript config.
Add these two lines to your tsconfig.json
file under the compilerOptions
key:
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
Usage
Basic usage is as follows:
// some-controller.ts
import { Request, Response } from 'router-library';
import { Controller, Req, Res, Get } from '@finwo/router';
@Controller()
export class SomeController {
@Get()
@Middleware(require('cors')())
indexAction(@Res() res: Response) {
res.send({
ok: true,
});
}
@Get('/other')
otherAction(@Res() res: Response) {
res.send({
ok: true,
});
}
}
Any controllers will be registered within the DI container of @finwo/di, allowing you to implement dependency injection into your controllers to decouple from your dependencies.
Middleware
Express-style middleware can be registered, but may not be supported by all adapters.