1.3.0 • Published 2 years ago

easy-express-router v1.3.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

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

{
  "experimentalDecorators": true,
  "emitDecoratorMetadata": true
}

Getting started

  1. 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'
        })
    }
}
  1. set Controllers
import {EasyRouter} from 'easy-express-router'

// controllers
const todosController: Todos = new Todos();


EasyRouter.setControllers([todosController])
  1. 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 []
    }

}