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方法匹配所有请求方式的请求。


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


版权声明:本文为博主原创文章,转载请注明出处,欢迎大家来一起交流。

Nodejs Express 4.X 中文API 4--- Router篇

本篇是Express 4.0 API翻译的第四篇,本篇的内容主要是Router的相关操作。   Router() 路由器是一个孤立的中间件和路由的实例。路由器可以被认为是一个”mini”的应用程序...
  • XiaoXIANGZI222
  • XiaoXIANGZI222
  • 2016年09月25日 12:20
  • 11021

koa2快速搭建api服务器-创建路由及定义GET和POST请求

koa2快速搭建api服务器
  • zhangfei8625
  • zhangfei8625
  • 2016年03月05日 15:34
  • 14334

koa 路由入门

1.安装路由组件 npm install koa-route 2. 注册路由 var koa = require('koa'); var route = require('koa...
  • ISaiSai
  • ISaiSai
  • 2015年03月16日 16:27
  • 5977

使用Koa2进行Web开发(二)静态文件与路由

静态文件处理 这里选择koa-static作为处理静态文件的中间件 const Koa = require('koa'); const app = new Koa(); const serve = ...
  • u010668495
  • u010668495
  • 2017年04月24日 21:31
  • 5526

node.js 针对不同的请求路径(url) 做出不同的响应

边看这个边写的: http://wenku.baidu.com/link?url=C4yLe-TVH6060u_x4t34H3Ze8tjoL7HjJaKgH-TvHnEYl-T_gAMYwhmrCeM...
  • gebitan505
  • gebitan505
  • 2015年09月02日 10:54
  • 3352

koa学习之路(1)---koa-router中nested router(嵌套路由)的坑

刚刚开始学习Koa框架不久,在使用koa-router路由中间件的时候遇到一个坑,浪费了点时间,必须要做个记录,给后人一个提醒!...
  • u011225099
  • u011225099
  • 2017年03月29日 17:51
  • 1683

express for node 路由route几种实现方式的思考

1、路由实现方式和顺序 express框架创建的模板app,js中默认代码 var express = require('express'); var routes = require('./rout...
  • mociml
  • mociml
  • 2013年09月05日 15:46
  • 34342

NodeJs——(12)添加路由

①之前我们有这么一段代码: app.use('/', routes);   //假如是根目录,那么交给routes.js来处理; app.use('/users', users);   //假如是/...
  • qq20004604
  • qq20004604
  • 2016年07月03日 23:03
  • 1292

koa-router介绍

在springMVC的9个组件中,有一个很重要的组件是handlermapping。这个组件的作用就是url处理器映射。在nodeJs中,负责这部分功能的是一个叫做koa-router的模块。 ko...
  • qq_32747453
  • qq_32747453
  • 2017年09月16日 09:55
  • 1163

koa-router 路由优先级问题

koa-router 根据定义的顺序,先定义的先被匹配,因此应该讲特殊路由放在前面定义,最后定义通用路由 如下 代码 是个错误的示例,如果访问 http://localhost:3000/xixi ...
  • ISaiSai
  • ISaiSai
  • 2015年08月24日 11:58
  • 4569
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nodejs/koa中route的全匹配
举报原因:
原因补充:

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