1.2.1 • Published 8 years ago
egg-blueprint v1.2.1
egg-blueprint
Routing decorator for eggjs
Usage
For Install
npm install --save  egg-blueprintSetup
In router.ts
//router.ts
import { Application } from 'egg'
import { Blueprint } from 'egg-blueprint'
export default (app: Application) => {
    Blueprint(app)
}Prefix Url Globally
//router.ts
Blueprint(app,{prefix:'/api'})
//controller.ts
export default class index extends Controller {
    @bp.get('/user') //===>>/api/user
    async get() {
        this.ctx.body = 'hello,egg-blueprint'
    }
}Prefix Url For Controller
//controller.ts
bp.prefix('/prefixtest', 'index')
export default class index extends Controller {
    @bp.get('/user') //===>>/prefixtest/user
    async get() {
        this.ctx.body = 'hello,egg-blueprint'
    }
}NOTICE 1: bp.prefix is not a decorator function. The first argument is prefix url, the second is ***the class name of this controller.
NOTICE 2: If you have already setup a global prefix option,controller prefix function will do the next:
//router.ts
Blueprint(app,{prefix:'/api'})
//controller.ts
bp.prefix('/prefixtest', 'index')
export default class index extends Controller {
    @bp.get('/user') //===>>/api/prefixtest/user
    async get() {
        this.ctx.body = 'hello,egg-blueprint'
    }
}Start Routing
import { bp } from 'egg-blueprint'
export default class index extends Controller {
    @bp.get('/')
    async get() {
        this.ctx.body = 'hello,egg-blueprint'
    }
    @bp.post('/')
    async post() {
        this.ctx.body = 'hello,post,egg-blueprint'
    }
    .....
}Adding Parmas
  @bp.get('/foo/:bar')
    async getWithID() {
        console.log(this.ctx.params)
        this.ctx.body = this.ctx.params['bar']
    }Router Middleware
Router middleware will run before the target function.
Example
const Auth = (ctx: Context,ctl: Controller) => {
    if (ctx.params['password'] === '1234') return true
    ctx.body = 'can not see'
    return false
}
// some-controller.ts
export default class TestController extends Controller {
   @bp.get('/need/auth/:password', Auth)
    async needAuth() {
        const { ctx } = this
        ctx.body = 'authed'
    }
}- middleware Params: Ctx:Contextandctl: Controller, in this case,ctlisTestController,not the originalController
- if middleware returns false,the target function will not run, onlyfalsecan stop the whole middleware stack. the target function will continue if returnstrueorundefined.
Quick CRUD
import { bp } from 'egg-blueprint'
@bp.restfulClass('blueprint')
export default class Index extends Controller {
    async Get() {
        this.ctx.body = 'hello,egg-blueprint'
    }
    async Post() {
        this.ctx.body = 'hello,post,egg-blueprint'
    }
    async Put() {
        this.ctx.body = 'hello,egg-blueprint'
    }
    async Del() {
        this.ctx.body = 'hello,egg-blueprint'
    }
}The MIT License (MIT)
Copyright (c) ZhengFang snakegear@163.com