Giter Site home page Giter Site logo

egg-blueprint's Introduction

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 [email protected]

egg-blueprint's People

Contributors

foveluy avatar lxxyx avatar jer0701 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.