easy-express-router
v1.3.0
Published
Express Router for Typescript - Easy and simple
Downloads
127
Maintainers
Readme
Easy Express Router for Typescript
Allows us to write express routers in typescript way (class-based, typesafe and asyncronous). It's a pluggable library so it's totally compatible with legacy codes, not enforcing application to use its styles.
Installation
npm i easy-express-router
tsconfig
- This is for typescript only. So we need typescript
- reflect-metadata must be turned on (
tsconfig.json
)
{
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
Getting started
- Pretty straight forward, first having routing/Controller class:
import {Controller} from 'easy-express-router'
@Controller('todos')
class Todos {
constructor() {
}
@Get('/')
async find(req: Request, res: Response): Promise<Todo[]> {
return []
}
@Get('/:id')
async findOne(req: Request, res: Response): Promise<void> {
res.json({
todoId: Number(req.params.id),
titie: 'lerning js'
})
}
}
- set Controllers
import {EasyRouter} from 'easy-express-router'
// controllers
const todosController: Todos = new Todos();
EasyRouter.setControllers([todosController])
- init to app.use
import {EasyRouter} from 'easy-express-router'
app.use(EasyRouter.initControllers())
- and Done! 🧹✅
examples:
Route Decorators
- Get()
- Post()
- Put()
- Patch()
- Delete()
- Head()
- Options()
Response Decorators
Headers()
- To specify a custom response header, you can either use @Headers() decorator or a library-specific response object ( and call res.header() directly).
import {Controller, EasyRouter} from 'easy-express-router'
@Controller('todos')
class Todos {
constructor() {
}
@Get('/')
@Headers({key: 'Cache-Control', value: 'none'})//or [{key,value}]
async find(req: Request, res: Response): Promise<Todo[]> {
return []
}
}