Express中method-override模块详解(一): 源码

// gettet 可以是一个自定义的function 或者是string
// function : 可以获取req.body中的数据 找到需要重写的方法(key--value),返回value。
// string : 以X-开头,那么这个key--value在req.header中设置
// string : 其他,那么这个key--value在req.url中设置
// 由于以上原因,method-override 需要放在 body-parser 之后
// options指定需要被改写的方法 比如 {method:['DELETE','POST']}等等
module.exports = function methodOverride(getter, options){
  options = options || {}

  // get the getter fn
  var get = typeof getter === 'function'
    ? getter
    : createGetter(getter || 'X-HTTP-Method-Override')

  // get allowed request methods to examine
  var methods = options.methods === undefined
    ? ['POST']
    : options.methods

  return function methodOverride(req, res, next) {
    var method
    var val

    req.originalMethod = req.originalMethod || req.method
    //

    // validate request is an allowed method
    // 用来判断这个请求是否属于需要被改写的范畴
    if (methods && methods.indexOf(req.originalMethod) === -1) {
      return next()
    }
    // 获得改写的目的方法
    val = get(req, res)
    method = Array.isArray(val)
      ? val[0]
      : val

    // replace
    if (method !== undefined && supports(method)) {
      req.method = method.toUpperCase()
      debug('override %s as %s', req.originalM
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值