Create highly performant and well-structured class-based controllers for Koa 2 using TypeScript.
NOTE: This is a "work in progress" project and many features are currently absent. Pull requests are welcome! :)
- Install this package:
npm install koa-routing-controllers
- Install reflect-metadata package:
npm install reflect-metadata
and make sure to import it before using this package:
import "reflect-metadata"
- Make sure you have
experimentalDecorators
andemitDecoratorMetadata
options enabled intsconfig.json
:
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
import "reflect-metadata";
import { Controller, Get, Param, createKoaServer } from "koa-routing-controllers";
@Controller()
export class HelloWorldController {
@Get("/")
helloWorld() {
return "Hello, world!";
}
@Get("/:name")
greetByName(@Param("name") name: string) {
return `Hello, ${name}!`;
}
}
createKoaServer({
controllers: [
HelloWorldController
]
}).listen(8080, () => {
console.log("Listening on http://localhost:8080");
});
- Add needed decorators
- Add more type coverage
- Add support for injectable parameters
- Add support for scoped middlewares
- Add support for body/query validation
- Add documentation