nodejs/koa中route的全匹配

原创 2016年05月30日 22:53:26

今天遇到一个很严重的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方法匹配所有请求方式的请求。


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


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

koa-router 路由优先级问题

koa-router 根据定义的顺序,先定义的先被匹配,因此应该讲特殊路由放在前面定义,最后定义通用路由 如下 代码 是个错误的示例,如果访问 http://localhost:3000/xixi ...

koa 路由入门

1.安装路由组件 npm install koa-route 2. 注册路由 var koa = require('koa'); var route = require('koa...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

nodejs koa framework overview

koa as nodejs server framework more simple than express , you should learn es6 ,javascript rather th...

koa:当创建一个服务时,做了什么

创建一个简单的应用// 1、实例化app var Koa = require('koa'); const app = new Koa(); // 2、声明中间件函数 async function re...

使用 koa

环境nodejs: v0.12.7 koa: v0.21.0koa 是这样介绍自己的 Koa 应用是一个包含中间件 generator 方法数组的对象。当请求到来时, 这些方法会以 stack-l...

Koa中间件方式实现API的Undo功能

不要在用户每做一步操作时弹出Alert让用户选择"确定"或者"取消",更好的做法是执行操作,然后让用户能够Undo

express与koa对比

本文从功能,使用体验以及源码方面对比了express和koa的区别

Koa vs Express

点击这里查看原文Koa vs Express在价值观上, Koa 宣称”fix and replace node”,而Express则为”augments node”。Koa 通过co库摆脱回调的坑并...

Nodejs-Koa是一个干净的框架

1. 关于koa今天学习了plover的底层框架koa。nodejs框架用的最多的是express,社区也最大、资料比较全,简单易上手,所以在我自己写的一个音乐分享的网站中后台框架用的是express...

[Kails] 一个基于 Koa2 构建的类似于 Rails 的 nodejs 开源项目

最近研究了下Koa2框架,喜爱其中间件的思想。但是发现实在是太简洁了,只有基本功能,虽然可以方便搭各种服务,但是离可以适应快速开发的网站框架还是有点距离。于是参考Rails的大致框架搭建了个网站框架k...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)