https://github.com/gwuhaolin/koa-router-decorator
@route decorator for koa-router
https://github.com/gwuhaolin/koa-router-decorator
koa router
Last synced: 19 days ago
JSON representation
@route decorator for koa-router
- Host: GitHub
- URL: https://github.com/gwuhaolin/koa-router-decorator
- Owner: gwuhaolin
- Created: 2018-01-02T12:06:06.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-08-19T05:52:08.000Z (almost 7 years ago)
- Last Synced: 2025-03-31T04:37:07.488Z (about 2 months ago)
- Topics: koa, router
- Language: TypeScript
- Homepage:
- Size: 15.6 KB
- Stars: 13
- Watchers: 2
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# koa-decorator
@route decorator for koa-router## Use
install by:
```bash
npm i koa-decorator
```
then use in code:
```js
import {HttpMethod, route} from 'koa-decorator';@route('/monitor')
export default class MonitorCtrl{@route('/alive', HttpMethod.GET)
async alive(ctx) {
ctx.body = {
data: true,
};
}
}
```
register to router:
```js
import {load} from 'koa-decorator';
const apiRouter = load(path.resolve(__dirname, 'route'));
// const apiRouter = load(path.resolve(__dirname, 'route', '.ts')); // only require .ts files as route
app.use(apiRouter.routes()).use(apiRouter.allowedMethods());
```## Use auth middleware
```js
import {HttpMethod, route} from 'koa-decorator';function auth(ctx) {
if(!ctx.auth){
ctx.response.status = 401;
}
}@route('/monitor')
export default class MonitorCtrl {@route('/alive', HttpMethod.ALL, auth)
async alive(ctx) {
ctx.body = {
data: true,
};
}
}
```## Return data direct
The following code has the same effect as above:
```js
@route('/monitor')
export default class MonitorCtrl {@route('/alive', HttpMethod.GET, auth)
async alive() {
return {
data: true,
};
}
}
```