ryou-router,Expressjs的路由插件

發現不少人不愛寫路由配置文件,並且分配路由確實是一個麻煩事。因而寫了這個插件,用於自動生成路由,支持promise,自動返回等等等等git

ryou-routergithub

ryou-router

The router plugin for expressjs about auto configure the routing function. 自動配置Expressjs路由插件web

API

const { router, BaseController } = require('ryou-router');

  // the params is optional
  app.use('/prefix', router({
    path: 'the path for your controller' // default value is `${process.cwd()}/controller`
  }))

  module.exports = class Api1 extends BaseController {
    `get /method/:id` (req, res) {
      return "ok";
    }
  }
複製代碼

Controller

Each controller means a routing function, just like below:express

get [prefix path]/[controller class name]/[method name]
複製代碼

E.X.: get /api/v1/webapi/test/test1json

controller rules:api

  1. {HTTPMethod}[path]1}{path2}${_PARAM1}
  2. {HTTPMethod path}
const { BaseController } = require("ryou-router"); // 全部controller 必須繼承自baseController

  module.exports = class Test extends BaseController {

    // 可寫可不寫
    constructor() {
      super();
    }

    // 在全部該模塊的請求被處理前執行
    before(req, res) {
      console.log("Request come in!" + req.originalUrl)
    }

    // 在全部請求返回後執行
    after(req, res) {
      console.log("Response come out!" + req.originalUrl)
    }

    // 提供兩種接口實現方式,能夠本身像平時同樣操做req,res
    get$test1(req, res) {
      res.status(200).json({
        code: 0,
        data: null,
        msg: req.params.id
      })
    }

    // 也能夠直接返回一個對象,這裏必須是對象,能夠經過this.req,this.res訪問請求的上下文req, res
    get$test2$_id() {
      return {
        code: 0,
        data: null,
        msg: this.req.params.id
      }
    }

    // 也能夠經過以下方式定義相應函數,'方法 /路徑1/路徑2/:id',參考http協議頭
    'get /test3' () {
      return {
        code: 0,
        data: null,
        msg: this.req.params.id
      }
    }

    // 內置success和failed方法,其中failed方法第四個參數是返回的httpStatusCode,默認400
    'get /test4' () {
      this.success(null, "test");
    }

    'get /test5/:msg' () {
      this.failed(400, this.req.params.msg, "test");
    }
  }
複製代碼

Demo

Demopromise

相關文章
相關標籤/搜索