express 路由管理,通过 app.express();  app.METHOD(path,fn(req, res)的方式进行路由的配置。实现了请求的接口的路由的拆分。那么可以将路由配置,分发到不同的文件中,进行分类管理。非常的nice。那么单个接口的能不能拆分更小的粒度尽心管理呢,答案是可以的。那就是中间件的方式。

express在路由函数回调函数中进行中间件处理的方式是依赖于,回调函数的第三个参数next ,如下:

app.get('/',function(req, res,next){

// 逻辑1 比如数据的初步处理

next() // 调用next() 执行下一个回调函数

if(property1)  {// 进行一些处理}   //  可以利用后面中间件的一些状态通过res或者req穿出。

// 挂载参数部分  req.property = property;

},function(req, res,next){

// 逻辑2 比如数据的一些判断之后的逻辑

next()

},function(req, res,next){

// 逻辑3 必须结果处理的一些逻辑

// 得出的property1状态,如果会影响上面的一个中间件的话 ,可以将property1挂载在res上,在上面的中间件函数中可以访问的到

res.property1 = property1 ;

})

上述例子给了一个大致的利用中间件,对业务逻辑进行划分的思路,实际情况可以自己来划分。将这些逻辑代码划分在多个函数中之后,那么久可以对复杂的逻辑

放在不同的文件中进行单独处理。 需要的时候,然后require进来。更好的定位错误,和管理项目。

但是特别要注意的是!!! ,这里没一个函数代码中的 ,一些特殊参数,如上列子中,的proerpry不能够再直接在后面的中间件中访问到,需要挂载到req或者res上

通过res.property 进行访问。

并且!!!!!!!!   ,这里的所有next之后的回调函数,并非是一直向下的,什么意思,express中间件是一个横向的洋葱模型,大家想象一下,拿一根很长的针,从洋葱的左侧,经过一层一层的外皮内部之后,又经过一层一层的外皮到达洋葱的另一端。

就是数据或逻辑的处理,是可以穿入和传出的。并非是下面的回到函数,一直接收上面回调函数的影响结果。也可以在下面的回调函数中,创建状态丢给上面的中间件进行判断和处理的。而这个还是依赖于req,res。比如上面的  property1属性的挂载。

在打一个通俗的彼方,有3个朋友一起做火车出行。他们各自有一包东西,过安检的时候,第一个包放上去,

,缓慢的通过机器进行检查。通过第一个包时,发现里面有瓶酒精,(他们准备火车上煮火锅)机器发出了警报,民警提示不能够带酒精上火车。

后面两位朋友,默默的把自己包里的酒精拿了出来。(看来是一顿大火锅)第三个包通过后,机器提示安全通过,第一个朋友忽然意识到,没道理啊,

我明明塞了一捆鞭炮放在第三个朋友包里,怎么机器没有报警。这些通过机器没有报警这么一个状态,第一个朋友知道了,第三个朋友早就知道鞭炮不能上火车,没有带鞭炮了。(他准备吃火锅之间,放鞭炮庆祝的)

在上面的模型中,这台安检机器 ,就是携带数据(背包和里面的东西)不断的通过检测,背包里的危险品被拿出。第一个包被检查出酒精,后面的朋友自觉的拿出了酒精

就是前面中间件对后面中间件的影响,而 第三个包检查完没有鞭炮是,他们知道了,第一个人知道了鞭炮没带,就是后面中间件对前面中间件的影响。

express 洋葱模型 路由管理 中间件的更多相关文章

  1. express 框架之 路由与中间件

    1.  什么是router路径,什么是middleware? 我们输入www.baidu.com 来访问百度的主页,浏览器会自动转换为 http://www.baidu.com:80/(省略一些参数) ...

  2. nodejs开发 express路由与中间件

    路由 通常HTTP URL的格式是这样的: http://host[:port][path] http表示协议. host表示主机. port为端口,可选字段,不提供时默认为80. path指定请求资 ...

  3. 全栈项目|小书架|服务器开发-Koa2中间件机制洋葱模型了解一下

    KOA2 是什么? Koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 通过利用 asyn ...

  4. NodeJS基础之Express路由和中间件

    路由 路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求. 路由是由一个 URI.HTTP 请求(GET.POST等)和若干个句柄组成,它的结构如下: app.method(path, [ ...

  5. express-18 路由

    简介 路由是网站或Web服务中最重要的一个方面:路由是将请求(由URL和HTTP方法指定)路由到处理它们的代码去的一种机制. 路由过去是基于文件的,这很简单,但不灵活. IA 是指内容的概念性组织.在 ...

  6. express 最佳实践(二):中间件

    express 最佳实践(二):中间件 第一篇 express 最佳实践(一):项目结构 express 中最重要的就是中间件了,可以说中间件组成了express,中间件就是 express 的核心. ...

  7. node.js之路由,中间件,ge请求和post请求的参数

    一.路由 1.什么是路由 服务器需要根据不同的URL或请求来执行不一样的操作,我们可以通过路由来实现这个步骤 2.实现路由的方法 2.1.get请求访问网址时,做什么事 1 app.get(" ...

  8. http协议、模块、express框架以及路由器、中间件和mysql模块

    一.http协议 是浏览器和web服务器之间的通信协议 1.通用头信息 request url:请求的url,向服务器请求的数据 request method:请求的方式   get.post sta ...

  9. 9. http协议_响应状态码_页面渲染流程_路由_中间件

    1. http协议 超文本传输协议 协议详细规定了 浏览器 和 万维网服务器 之间互相通信的规则 客户端与服务端通信时传输的内容我们称之为报文(请求报文.响应报文) 常见的发送 get 请求方式 在浏 ...

随机推荐

  1. 代码Verify简介

    序 对于开发者而言,编译代码和提交代码是必不可少的流程,同一个需求反复提交的情况也时常出现,那么怎么避免这种情况,且保证代码的质量,这就是Verify CI的目标.Verify表示认证验证的意思,结合 ...

  2. PHP设计模式之----观察者模式

    一.概述 1.观察者模式(Observer),当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新. 2.场景:一个事件发生后,要执行一连串更新操作.传统的编程方式,就是在事件的代码之后 ...

  3. android studio 部分问题及解决方案

    1 启动多个虚拟机后开启指定端口的虚拟机     https://blog.csdn.net/chuyouyinghe/article/details/72958004       adb devic ...

  4. linux gdb 入门级教程(小白专用)

    送给包含我在内的所有小白: 对于养linux真姬的本小白来说,既然你选择养它,那你就要满足他. 如果你养了它是为了码代码,那我觉得gdb应该是它的基本需求了吧?! 然而gdb哪有那些IDE来的简单啊, ...

  5. map,reduce,filter基础实现

    #coding=gbk from operator import add # 导入加法 # map 函数名 , 序列对象 print(list(map(str,range(5)))) print(li ...

  6. Python os.utime() 方法

    概述 os.utime() 方法用于设置指定路径文件最后的修改和访问时间.高佣联盟 www.cgewang.com 在Unix,Windows中有效. 语法 utime()方法语法格式如下: os.u ...

  7. Python os.fstat() 方法

    概述 os.fstat() 方法用于返回文件描述符fd的状态,类似 stat().高佣联盟 www.cgewang.com Unix,Windows上可用. fstat 方法返回的结构: st_dev ...

  8. PHP next() 函数

    实例 输出数组中的当前元素和下一个元素的值: <?php$people = array("Peter", "Joe", "Glenn" ...

  9. UOJ 422 [集训队作业2018] 小Z的礼物 min-max容斥 期望 轮廓线dp

    LINK:小Z的礼物 太精髓了 我重学了一遍min-max容斥 重写了一遍按位或才写这道题的. 还是期望多少时间可以全部集齐. 相当于求出 \(E(max(S))\)表示最后一个出现的期望时间. 根据 ...

  10. AtCoder Beginner Contest 173 E Multiplication 4 分类讨论 贪心

    LINK:Multiplication 4 害怕别人不知道我有多菜 那就上张图: 赛时 太慌了 (急着AK 题目不难却暴露我的本性 根本不思考无脑写 wa了还一直停不下来的debug 至少被我发现了1 ...