理解Express 中间件
Express 中间件
Express程序基本上是一系列中间件函数的调用。中间件就是一个函数, 接受 req、res、next几个参数。
中间件函数可以执行任何代码, 对请求和响应对象进行修改, 结束请求/响应循环, 通过 next函数调用堆栈中下一个中间件函数。
必须通过 next 将控制权交给下一个中间件函数, 否则, 请求将保持挂起状态。
错误处理中间件始终采用四个变量, 第一个参数就是错误信息。
app.use((err, req, res, next) => {
next()
})
Express 中唯一内置的中间件函数是 express.static。此函数基于 serve-static,负责提供 Express 应用程序的静态资源。
例子
app.use((req, res, next) => {
console.log(1)
next()
})
app.use((req, res, next) => {
console.log(2)
next()
})
app.get('/list', (req, res, next) => {
console.log('get /list')
next()
})
app.post('/login', (req, res, next) => {
console.log('post /login')
next()
})
app.post('/login/user', (req, res, next) => {
console.log('post /login/user')
next()
})
- 如果开启一个服务, 端口号为3000。 那么直接访问
http://localhost:3000会依次打印
1
2
- 访问
http://localhost:3000/listget方, 依次打印
1
2
get /list
- 访问
http://localhost:3000/login/userpost请求, 依次打印
1
2
post /login/user
理解Express 中间件的更多相关文章
- 理解Express中间件
阅读目录 一:body-parser中间件 二:cookie-parser中间件 三:express-session 中间件 四:理解使用morgan记录操作日志 回到顶部 一:body-parser ...
- 浅析express以及express中间件
一.express: 1.express: Express是什么? Express是基于node.js平台的web应用开发框架: 作用:可以实现快速搭建骨架: 优点:开发web应用更加方便,更加快捷. ...
- 理解express中的中间件
express是轻量灵活的node.js Web应用框架”.它可以帮助你快速搭建web应用.express是一个自身功能极简,完全是由**路由**和**中间件**构成的一个web开发框架,本质上说,一 ...
- express中间件的理解
参考 :https://blog.csdn.net/huang100qi/article/details/80220012 Express中间件分为三种内置中间件.自定义中间件.第三方中间件 可以与n ...
- express 中间件的理解
nodejs(这指express) 中间件 铺垫: 一个请求发送到服务器,要经历一个生命周期,服务端要: 监听请求-解析请求-响应请求,服务器在处理这一过程的时候,有时候就很复杂了,将这些复杂的业务拆 ...
- Express中间件的原理及实现
在Node开发中免不了要使用框架,比如express.koa.koa2拿使用的最多的express来举例子开发中肯定会用到很多类似于下面的这种代码 var express = require('exp ...
- 理解Express express.static 和 __direname 及 __firename的含义
理解Express express.static 和 __direname 及 __firename的含义 一:理解 app.use(express.static(__direname + '/pub ...
- 深入理解 Express.js
本文针对那些对Node.js有一定了解的读者.假设你已经知道如何运行Node代码,使用npm安装依赖模块.但我保证,你并不需要是这方面的专家.本文针对的是Express 3.2.5版本,以介绍相关概念 ...
- Express中间件简单的实现原理
上一篇理解Express的使用之后, 再总结一篇Express中间件的简单实现原理. 我们知道Express中间件就是一个个的函数, 那么怎么让这些函数有序的执行呢? 那就需要我们调用 next 函数 ...
随机推荐
- 找出list中的不同元素、删除两个list中相同的对象
package com.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; ...
- [转]深入探讨C语言中局部变量与全局变量的作用域与存储类别
C语言中局部变量和全局变量变量的作用域与存储类别(auto,static,extern,register) 1.局部变量和全局变量在讨论函数的形参变量时曾经提到,形参变量只在被调用期间才分配内存单元, ...
- MD5Utils
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import com.yundae ...
- 获取n天后的日期
getDateAfter_n(days){ let date = new Date(); date.setDate(date.getDate() + days); let yearStr = date ...
- (转)diff 命令
每天一个linux命令(36):diff 命令 原文:http://www.cnblogs.com/peida/archive/2012/12/12/2814048.html diff 命令是 li ...
- 在Pycharm中写python代码时光标变粗
在练习写python代码时,不小心摁了Insert键,结果光标变粗. 如下图所示: 原因: 和word一样,在编辑文本或代码时,有两种模式:改写和插入模式. 当我们在编辑文章或者是代码时,应该将模式设 ...
- case 范围取值
你可以在单个case标签中指定一系列连续的值,就像这样: case low ... high: 这和单独的case标签的合适数字有同样的效果,每个对应包含在从low到high中的一个整数值. 这个 ...
- Chapter 18 MySQL NDB Cluster 7.3 and NDB Cluster 7.4渣翻
Table of Contents 18.1 NDB Cluster Overview 18.2 NDB Cluster Installation 18.3 Configurati ...
- asp.net弹出窗口并返回值
a.html <form name="form1" method="post" action=""> <a href=&q ...
- C#与重构(入门)
C#与代码重构(入门) 重构(Refactoring)就是通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性. 单从概念少来理解重构可能很抽象,那么通过下 ...