one.io
A feature-rich routing middleware for koa
Last updated 7 days ago by ephoton .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install one.io 
SYNC missed versions from official npm registry.

npm version Build Status Coverage Status

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.

Current Tags

  • 1.0.23                                ...           latest (7 days ago)

20 Versions

  • 1.0.23                                ...           7 days ago
  • 1.0.22                                ...           7 days ago
  • 1.0.21                                ...           7 days ago
  • 1.0.20                                ...           7 days ago
  • 1.0.19                                ...           7 days ago
  • 1.0.18                                ...           9 days ago
  • 1.0.17                                ...           13 days ago
  • 1.0.16                                ...           13 days ago
  • 1.0.15                                ...           13 days ago
  • 1.0.14                                ...           14 days ago
  • 1.0.13                                ...           14 days ago
  • 1.0.12                                ...           14 days ago
  • 1.0.11                                ...           20 days ago
  • 1.0.10                                ...           a month ago
  • 1.0.9                                ...           a month ago
  • 1.0.8                                ...           2 years ago
  • 1.0.7                                ...           2 years ago
  • 1.0.6                                ...           2 years ago
  • 1.0.5                                ...           2 years ago
  • 1.0.4                                ...           2 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 213
Last Day 0
Last Week 105
Last Month 66
Dependencies (22)
Dev Dependencies (8)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |