@finwo/router
v0.5.3
Published
TypeScript controller decorators
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/routerThis package makes use of decorators and decorator metadata using the reflect-metadata package, which requires enabling experimental decorators and emitting decorator metadata. It is not compatible with the TS5 stage 3 decorators and this is not the only library affected.
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.
