发现不少人不爱写路由配置文件,并且分配路由确实是一个麻烦事。因而写了这个插件,用于自动生成路由,支持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