1.0.11 • Published 3 years ago

express-router-maker v1.0.11

Weekly downloads
15
License
ISC
Repository
-
Last release
3 years ago

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 方法,比如GETPOST等,而routerMap的属性值同样都是对象。这些对象就表示具体的路由,以路径为Name、函数为Value

其中每个函数的参数将会从requestquery或者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()
      }
    }
  • tryOrFailSynctryOrFail的同步版本

1.0.11

3 years ago

1.0.9

3 years ago

1.0.10

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago