發現不少人不愛寫路由配置文件,並且分配路由確實是一個麻煩事。因而寫了這個插件,用於自動生成路由,支持promise,自動返回等等等等git
ryou-routergithub
The router plugin for expressjs about auto configure the routing function. 自動配置Expressjs路由插件web
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";
}
}
複製代碼
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
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");
}
}
複製代碼
Demopromise