easy-express-router
TypeScript icon, indicating that this package has built-in type declarations

1.3.0 • Public • Published

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 []
    }

}

Package Sidebar

Install

npm i easy-express-router

Weekly Downloads

2

Version

1.3.0

License

ISC

Unpacked Size

51.2 kB

Total Files

84

Last publish

Collaborators

  • sajjadmrx