README
express-router-maker
可以在RESTful风格中,简化express的router的书写,同时也更适应函数式编程的风格。
Router Maker
Example
const makeRouter = require('express-router-maker')
const routerMap = {
GET: { // or get
'/GET_Path': (arg1, arg2) => {
// do sth
return sth;
}
},
POST: { // or post
'/POST_Path': POSTHandleFunction
}
}
const router = makeRouter(routerMap)
我们只需要像上面这样,写HTTP方法、路径和路径对应的处理函数(handle function)。 通过makeRouter,会等效于下面这些
const express = require('express')
const router = express.Router()
router.get('/GET_Path', (req, res) => {
// `处理函数`中的`参数`(arg1, arg2) 会自动地从`req.query`或者`req.body`中获取同名的值
// 然后用这些参数执行`处理函数`
// 最后用res.json返回执行 `处理函数` 的结果
})
router.post('/POST_Path', (req, res) => {
// 同上
})
Description
源码在 src/router-maker.js
该工具可以根据一个特定对象routerMap(见Example的第一段代码)
生成对应的router
, 从而简化 router 的书写。
routerMap的属性名只能是HTTP 方法
,比如GET
,POST
等,而routerMap的属性值同样都是对象。这些对象就表示具体的路由,以路径为Name
、函数为Value
。
其中每个函数的参数将会从request
的query
或者body
中提取,每个函数的返回值,将会被res.json()
发送。
发生错误时,会自动使用res.fail()
发送错误信息。(见下一节的Response Decorator
)
Response Decorator
源码在 src/response-decorator.js
这其实算是一个express的中间件
用于向response添加一下函数:
success
// 发送成功数据 res.success = (data = {}) => { res.json({ success: true, ...data }) }
fail
// 返回失败信息 res.fail = (error = '') => { res.json({ success: false, error }) }
tryOrFail
:尝试运行fn, fn可以是同步函数,异步函数,以及Promise。
发生错误时,会自动返回请求。并进行输出
res.tryOrFail = async (fn) => { try { //运行fn } catch (e) { res.fail() } }
tryOrFailSync
:tryOrFail
的同步版本