Decorator typescript para express controlers/router
Se você não sabe sobre methodos HTTP veja: HTTP request methods at MDN
// Exemplo de controller
import { Request, Response } from 'express'
import { ControllerBase, Controller, Get } from 'express-http-decorators';
@Controller() // /example
export class Example extends ControllerBase {
@Get({ path: '/world' }) // /example/world
world(request: Request, response: Response) {
response.send('Hello World');
}
@Post({ path: '/hello' }) // /example/hello
hello(request: Request, response: Response) {
response.send('Hello World');
}
}
export default Example;// Exemplo de API Express
import express, { Router } from 'express';
import { autoloader } from 'express-http-decorators';
import Example from './controllers/Example';
const app = express();
app.use(autoloader([Example], Router()))
app.listen(8888, () => {
console.log('Express http decorator on air at 127.0.0.1:8888')
})Função para carregar controllers e montar endpoints
autoloader(array: Array<class extends ControlerBase>, router: Express.Router, verbose: (ResourceIdentifier) => void): Express.Router: Essa função recebe um array de classes"controller"que extendeControlerBasee conecta ao roteador do expressarray: Array<class extends ControlerBase>: Array de classes que extendeControllerBaserouter: Express.Router: O roteador (router) do expressverbose: (ResourceIdentifier) => void: Função de retornor que é chamada a cada nova endpoint conectada ao router ao roteador (Com fins de debug)
Métodos HTTP disponíveis: Post, Get, Put, Patch, Delete
@<decorator name>(methodParameters?: MethodParameters): Com esse decorator você sinaliza um étodos na classe como endpointMethodParameters.path: Nome customizado para endpoint, Se não especificado, será o nome do método da classeMethodParameters.middleware: Array de middlewares express
Decorator para classe controller. A classe controller sempre deve extender ControllerBase.
@Controller(name?: string): Esse decorator define o nome base da endpoint veja o exemplo acima. Se não definido o nome da classe será usado be the name of class
-
- Baixe o repositório
-
npm installPara instalar as dependências
-
npm link && npm link express-http-decoratorsPara criar referência desse projeto como módulo no diretório node_modules
-
npm run devPara executar o código no diretório example