Express中间件的介绍

简介: Express中间件的介绍

Express中间件


中间件的概念


中间件的概念:


中间件就是把很复杂的事情分割成单个,然后依次有条理的执行。就是一个中间处理环节,有输入,有输出。


说的通俗易懂点儿,中间件就是一个(从请求到响应调用的方法)方法

把数据从请求到响应分步骤来处理,每一个步骤都是一个中间处理环节。

接下来我们使用Node.js创建一个HTTP服务器,并自定义三个中间件:cookie、query和post-body。 代码示例


var http = require('http');
var url = require('url');
var cookie = require('./expressPtoject/cookie');
var query = require('./expressPtoject/query');
var postBody = require('./expressPtoject/post-body');
var server = http.createServer(function(){
  // 解析请求地址中的get参数
  // var obj = url.parse(req.url,true);
  // req.query = obj.query;
  query(req,res); //中间件
  // 解析请求地址中的post参数
  req.body = {
    foo:'bar'
  }
});
if(req.url === 'xxx'){
  // 处理请求
  ...
}
server.listen(3000,function(){
  console.log('3000 runing...');
});


下面是对代码的解释:

  1. var http = require('http');这一行代码使用Node.js内置的http模块创建了一个HTTP服务器。
  2. var url = require('url');这一行代码使用Node.js内置的url模块来解析URL。
  3. var cookie = require('./expressPtoject/cookie');这一行代码导入了一个自定义的cookie模块,该模块可能包含了一些处理HTTP cookie的代码。
  4. var query = require('./expressPtoject/query');这一行代码导入了一个自定义的query模块,该模块可能包含了一些解析HTTP GET参数的代码。
  5. var postBody = require('./expressPtoject/post-body');这一行代码导入了一个自定义的post-body模块,该模块可能包含了一些解析HTTP POST参数的代码。
  6. var server = http.createServer(function(){...});这一行代码创建了一个HTTP服务器,并将一个匿名函数作为参数传递给createServer方法。这个函数是一个请求处理程序,会在每个HTTP请求到达服务器时被调用。
  7. query(req,res);这一行代码调用了导入的query模块的函数,该函数可能会解析HTTP GET参数,并将解析结果添加到req.query对象中。
  8. req.body = {...}这一行代码模拟了一个HTTP POST请求的请求体,并将其添加到req.body对象中。
  9. if(req.url === 'xxx'){...}这一行代码判断请求的URL是否是xxx,如果是,就处理该请求。
  10. server.listen(3000,function(){...});这一行代码让HTTP服务器开始监听端口3000,并在服务器启动时调用一个回调函数。该回调函数输出一条消息,表示服务器已经启动。

接下来我们设计一个中间件当用户在浏览器中访问 http://localhost:3000/abc 时,服务器将处理该请求并执行 app.get('/abc', ...) 中的回调函数。在第一个回调函数中,服务器将向 req 对象添加一个 body 属性,并将其设置为一个包含 nameage 属性的对象。在第二个回调函数中,服务器将向控制台输出 req.body,以及一个字符串 "/abc"。这段代码只处理 HTTP GET 请求,如果用户在浏览器中提交了 HTTP POST 请求,服务器将不会响应。

代码示例:


var express = require('express');
var app = express();
app.get('/abc',function(req,res,next){
  // 同一个请求的req和res是一样的,
  // 可以前面存储下面调用
  console.log('/abc');
  // req.foo = 'bar';
  req.body = {
    name:'xiaoxiao',
    age:18
  }
  next();
});
app.get('/abc',function(req,res,next){
  // console.log(req.foo);
  console.log(req.body);
  console.log('/abc');
});
app.listen(3000, function() {
  console.log('app is running at port 3000.');
});


上面这段代码使用了Express框架,创建了一个应用程序对象app,并监听了端口3000。在该应用程序中,使用app.get()方法创建了两个路由处理程序,路由地址均为“/abc”,并且都使用了中间件函数next()。

第一个路由处理程序使用了中间件函数,打印了字符串“/abc”,并将一个名为“body”的属性添加到req对象中。注意,在Express中,req对象和res对象在整个请求周期中都是同一个对象,因此可以在前面一个路由处理程序中将数据存储到req对象中,然后在后面的路由处理程序中进行调用。

第二个路由处理程序也使用了中间件函数,打印了字符串“/abc”,并且打印了前一个路由处理程序中存储在req对象中的“body”属性值。这个例子展示了在一个请求的生命周期中,可以有多个路由处理程序,它们可以共享req对象和res对象。


中间件的分类:


应用程序级别的中间件


可以万能匹配的中间件(不关心任何请求路径和请求方法的中间件):


app.use(function(req,res,next){
    console.log('Time',Date.now());
    next();
});


上面这段代码,使用 app.use() 方法将其注册到应用程序中。该中间件的作用是在每个请求处理之前打印当前时间,然后通过调用 next() 将请求传递给下一个中间件或路由处理程序。

在这个例子中,console.log('Time', Date.now()) 会在每个请求到达应用程序时打印当前时间戳。next() 会将控制权交给下一个中间件或路由处理程序。如果没有其他中间件或路由处理程序,则请求处理将结束,响应将被发送回客户端。

通过使用 app.use() 注册中间件,可以确保每个请求都会通过该中间件。这对于在所有请求中添加相同的处理逻辑非常有用,比如身份验证或日志记录。 关心请求路径和请求方法的中间件:


路由级别的中间件


严格匹配请求路径和请求方法的中间件

  • get:中间件


app.get('/',function(req,res){
  res.send('get');
});


  • post:中间件


app.post('/a',function(req,res){
  res.send('post');
});


  • put:中间件


app.put('/user',function(req,res){
  res.send('put');
});


  • delete:中间件


app.delete('/delete',function(req,res){
  res.send('delete');
});


总结和思考


Express中间件(middleware)是一种用于处理HTTP请求和响应的函数。中间件函数可以访问请求对象(request object)(req)、响应对象(response object)(res),以及应用程序的下一个中间件函数(next)。中间件函数可以用来执行各种任务,例如检查用户身份验证、解析请求体、设置响应头等。

Express中间件可以是应用程序级别的或路由级别的。应用程序级别的中间件将应用于整个应用程序,而路由级别的中间件将仅应用于特定的路由或路由组。

中间件函数可以是同步的或异步的。如果中间件函数执行了next(),那么它将把请求和响应传递到下一个中间件函数。如果没有调用next(),则不会传递请求和响应到下一个中间件函数。

在Express中使用中间件非常简单。只需要使用app.use()方法将中间件函数添加到应用程序的中间件堆栈中即可。例如,下面是一个将中间件函数添加到应用程序中的示例:


const express = require('express');
const app = express();
app.use((req, res, next) => {
  console.log('Logging middleware');
  next();
});
app.listen(3000, () => {
  console.log('Server started on port 3000');
});


上面的示例将“Logging middleware”输出到控制台,并调用next()将请求和响应传递给下一个中间件函数。

Express中间件是一个非常强大的功能,它使得我们能够轻松地添加各种功能和处理程序到我们的应用程序中。无论是构建Web应用程序还是API,中间件都是一个必不可少的组件。

目录
相关文章
|
8月前
|
JSON 前端开发 中间件
axios基本使用,express中间件
axios基本使用,express中间件
|
8月前
|
JSON JavaScript 中间件
node.js中Express框架路由,中间件
node.js中Express框架路由,中间件
|
7月前
|
中间件
93 # 实现 express 错误处理中间件
93 # 实现 express 错误处理中间件
27 0
|
4月前
|
JavaScript 前端开发 中间件
Node.js—Express使用、Express 路由 、Express 中间件、托管静态资源、使用 Express 写接口、node.js链接sqlite数据库
Node.js—Express使用、Express 路由 、Express 中间件、托管静态资源、使用 Express 写接口、node.js链接sqlite数据库
117 0
|
5月前
|
Web App开发 JavaScript 前端开发
Express 框架的特点、使用方法以及相关的常用功能和中间件
Express 框架的特点、使用方法以及相关的常用功能和中间件
86 1
|
7月前
|
中间件
92 # express 中的中间件的实现
92 # express 中的中间件的实现
20 0
|
11月前
|
JSON JavaScript 中间件
一起来认识 Express 中间件,其实也没那么复杂
express是一个基于node.js的web应用框架,它提供了一系列强大的特性,帮助你创建各种web和移动设备应用。 express是一个轻量级的包含路由系统的web框架,它没有内置的中间件
128 0
|
11月前
|
JavaScript NoSQL 中间件
【Node.js实战】一文带你开发博客项目之初识Express(安装Express,处理路由,中间件机制)
【Node.js实战】一文带你开发博客项目之初识Express(安装Express,处理路由,中间件机制)
102 0
|
前端开发 JavaScript 中间件
前端需要去了解的nodejs知识(express中间件)
在上一节中我们简单了解了express的路由,本文主要分析下express的另一个核心功能中间件的使用。路由是express整个框架能有如今广泛使用和发展的基础,那中间件就是其发展的养分。正是express丰富的中间件才节省了我们大量的开发时间。
|
4月前
|
JSON JavaScript 前端开发
超级实用!详解Node.js中的util模块和express模块
超级实用!详解Node.js中的util模块和express模块