rubbish.magong.io2
v1.0.28
Published
A feature-rich routing middleware for koa
Downloads
142
Readme
one.io
1️⃣ A feature-rich routing middleware for koa2.
Prerequisites
- Node.js 7+
Install
npm install one.io --save
or
yarn add one.io
Usage
router
Initialize your router in 'app.ts'
// app.ts
import * as Koa from 'koa';
import { Router } from 'one.io';
const App = new Koa();
const router = new Router({
apiPath: './build/route/api',
routePath: './build/route/route'
});
router.routes(App);
App.listen(4000);
api route
Build your routes under the directories.
import { validator, ResponseInfo, Token, get, post } from 'one.io';
export default class User {
// methods: 'get' | 'post' | 'put' | 'head' | 'delete'
@get<UserPermission>({
// path: 'user/register',
permission: UserPermission.none
})
@validator({
name: isAlphanumeric,
password: isAlphanumeric
})
static async userRegister(
ctx: Context,
next: Function
): Promise<ResponseInfo> {
const { query } = ctx;
const { name, password } = query;
const result: ResponseInfo = await registerUser(name, password);
return result;
}
}
page route
Render data for pages.
import { validator, ResponseInfo, Token, get, post, route } from 'one.io';
export default class Index {
@route<UserPermission>({})
static async userLogin(ctx: Context, next: Function) {
const { query } = ctx;
const { name, password } = query;
return {
title: 'one.io'
};
}
}
permission
If permission support is needed, you should import class Permission and implement it.
import { Permission } from 'one.io';
export class UserPermission extends Permission {
constructor(groups: string[]) {
super(groups);
}
async getUserPermissionByName(name: string): Promise<UserPermission> {
// get permission by user name
}
}
// then build your permissions.
export const UserPermissions = {
none: new UserPermission(['none']),
guest: new UserPermission(['guest']),
admin: new UserPermission(['admin'])
};
Options
router
- apiPath: A directory for api routes. Optional, default is './route/api'.
- pagePath: A directory for page routes. Optional, default is './route/page'.
- cookies: Set the keys for user name and token. Optional, default is '{ user: 'user', token: 'token' }'
api & page
- path: Path for the route. Optional, automatically transform from method name.
For example, a method named 'userRegister' means the route path is '/user/register'
- permission: Set a permission for a route. Optional, default value is 'undefined'.
Features
- Parse http request body.
- Verify Permission and token.
- Validate request parameters.
- Written in TypeScript with complete define types.
License
MIT License.