nodejs/koa中route的全匹配

今天遇到一个很严重的bug,原因是我对一个老接口进行重实现,老的服务就不需要了,这样做到资源最大化利用,但是老的服务是nginx层直接处理,没有区分请求方式,所有请求方式都支持,默认是使用了get方式,并且支持jsonp,一般情况下支持jsonp的请求都是get请求,但是客户端接入的时候使用了post方式,而新的服务是只做了支持了get方式,导致上线之后大量报错。

虽然老接口的实现很奇葩,但是已经有很多项目在使用了,让每个项目都修改是不可能的,只能新的服务支持所有的请求方式。

那么问题来了,node中怎么忽略请求方式呢,匹配所有请求方式的请求呢?

新的服务是koa项目,先看看https://github.com/alexmingoia/koa-router官方文档有没有说明,不用说肯定有:

var router = require('koa-router')
router.all('/login', function *() {
  this.redirect('/sign-in');
  this.status = 301;
});

router.all这个方法可以,扩展一下,ES5中的express框架支持吗,google一下,http://expressjs.com/en/guide/routing.html,确实支持:

app.all('/secret', function (req, res, next) {
  console.log('Accessing the secret section ...');
  next(); // pass control to the next handler
});

perfect!顺便提下,rails可以用match方法匹配所有请求方式的请求。


但是这样好不好呢,并不好,一个请求支持所有请求方式会带来很严重的问题,比如跨站请求伪造等等互联网常见的问题,也增加了路由的复杂度,拖慢速度。所以一般情况下不建议这样做。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值