egg-blueprint

1.2.1 • Public • Published

egg-blueprint

NPM version build status Test coverage David deps node version npm download

Routing decorator for eggjs

Usage

For Install

npm install --save  egg-blueprint

Setup

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:Context and ctl: Controller, in this case, ctl is TestController,not the original Controller
  • if middleware returns false,the target function will not run, only false can stop the whole middleware stack. the target function will continue if returns true or undefined.

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

Readme

Keywords

none

Package Sidebar

Install

npm i egg-blueprint

Weekly Downloads

12

Version

1.2.1

License

none

Unpacked Size

14.4 kB

Total Files

9

Last publish

Collaborators

  • snakegear