Nodejs之Express中间件的分类介绍

Node.js是一种基于Chrome V8引擎的开放源代码、跨平台的后端JavaScript运行环境。而Express是Node.js的一个简洁、灵活的Web应用架构,提供了一系列强大的特性。

在Express中,中间件是处理HTTP请求(如路由),以及HTTP响应的函数。通俗地说,就是在我们自己的代码实现前、后对请求进行的一些处理,它可以是一个或多个函数形成的一个处理流程,其中每个函数依次处理传递下来的请求和响应对象。它可以执行任何代码,写入或输出响应对象,以及对请求和响应对象进行修改等等。

在Express中,中间件可以分为四类:

  1. 应用级中间件:通过app.use()app.get()app.post()等方法来定义的中间件,它们绑定到应用程序对象上,用于日志记录、解析请求体、处理跨域请求等功能。

示例1:应用级日志中间件

const express = require('express');
const app = express();

// 定义日志中间件
const logger = (req, res, next) => {
  console.log(`${new Date().toLocaleString()} - ${req.method} ${req.url}`);
  next();
}

// 应用中间件
app.use(logger);

// 路由
app.get('/', (req, res) => {
  res.send('Hello World!');
});

// 监听端口
app.listen(3000, () => {
  console.log('Server is running at port 3000');
});
  1. 路由级中间件:通过app.route()router.route()等方式定义的中间件,用于检测特定路由请求,比如用户登录操作等。

示例2:路由级中间件

const express = require('express');
const app = express();
const router = express.Router();

// 定义路由级中间件
const auth = (req, res, next) => {
  if (req.query.user === 'admin') {
    console.log('Authorized user');
    next();
  } else {
    console.log('Unauthorized user');
    res.send('Unauthorized user');
  }
}

// 路由
router.get('/', auth, (req, res) => {
  res.send('Hello admin!');
});

// 注册路由
app.use('/admin', router);

// 监听端口
app.listen(3000, () => {
  console.log('Server is running at port 3000');
});
  1. 错误处理中间件:用于处理应用中未能捕获的错误,一般在中间件链的最后被定义。

示例3:错误处理中间件

const express = require('express');
const app = express();

// 路由
app.get('/', (req, res) => {
  throw new Error('oops!');
});

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Something went wrong!');
});

// 监听端口
app.listen(3000, () => {
  console.log('Server is running at port 3000');
});
  1. 内置中间件:是由Express封装好的,使用不需要引入额外模块的中间件。常用的有express.json()express.urlencoded()等,用于解析请求体。

以上是Express中间件的四种分类及示例,通过理解和使用它们,可以让我们更快速、高效地开发出高质量的Web应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nodejs之Express中间件的分类介绍 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • java实现单链表增删改查的实例代码详解

    Java实现单链表增删改查的实例代码详解 单链表是一种常见的数据结构,它由多个节点组成,每个节点包含一个值和一个指针,指向下一个节点。单链表可以用于实现栈、队列等数据结构。 在Java中,我们可以使用类来表示一个单链表。下面是单链表节点类的示例代码: class ListNode { int val; ListNode next; ListNode(int …

    node js 2023年6月8日
    00
  • Node搭建https服务器实例详解

    Node搭建HTTPS服务器实例详解 1. 生成HTTPS证书 在搭建HTTPS服务器前,需要生成HTTPS证书。可以通过OpenSSL库来生成证书。具体步骤如下: 安装OpenSSL库。可以通过以下命令在Ubuntu上安装: sudo apt-get install openssl 创建证书存储目录和证书 我们需要为HTTPS服务器生成一个完整的数字证书,…

    node js 2023年6月9日
    00
  • koa+mongoose实现简单增删改查接口的示例代码

    我来给你讲解一下 “koa+mongoose实现简单增删改查接口的示例代码”的完整攻略。 一、前期准备 在开始编写代码之前,我们需要先准备一些工作: 安装koa和koa-router npm install koa koa-router –save 安装mongoose npm install mongoose –save 创建并连接数据库 在进行增删改…

    node js 2023年6月8日
    00
  • node.js连接MongoDB数据库的2种方法教程

    下面我将详细讲解“Node.js连接MongoDB数据库的2种方法教程”的完整攻略。 概述 在使用Node.js进行Web开发时,我们通常需要连接数据库来存储和管理数据。MongoDB是一种流行的NoSQL数据库,它可以非常方便地与Node.js配合使用。本文将介绍如何使用Node.js连接MongoDB数据库的2种方法。 方法一:Mongoose Mong…

    node js 2023年6月8日
    00
  • Node.js数据库钩子的使用

    Node.js是一个非常流行的服务器端运行时环境,可以使用它来构建高效的应用程序。在Node.js应用程序中,我们经常需要连接到数据库,并在数据库读取或写入数据时执行某些操作。Node.js提供了一种非常强大的技术 – 数据库钩子,可以用于在数据库读写操作的执行前或执行后自动执行某些特定的代码。 什么是数据库钩子 数据库钩子是一种让你在数据库执行查询或写入操…

    node js 2023年6月8日
    00
  • node 可读流与可写流的运用详解

    Node 可读流与可写流的运用详解 概述 在 Node.js 中,读写操作一般来说都会使用流的方式进行。其中可读流提供了一种将数据从 source 输出到 destination 的抽象方式;而可写流则提供了一种将数据写入 destination 的抽象方式。对于数据中间处理过程,我们可以使用管道(piping)的方式链接可读流和可写流。 可读流 核心方法 …

    node js 2023年6月8日
    00
  • JavaScript ES6中类与模块化管理超详细讲解

    JavaScript ES6中类与模块化管理超详细讲解 什么是ES6中的类 在ES6之前,我们用函数来模拟类,从而实现面向对象编程。但是这种方式并不直观,并且容易出错。在ES6中,我们可以通过关键字class来定义类,这样就更加符合面向对象编程的直观性。 如何定义一个类 使用关键字class可以定义一个类,其中类名的首字母通常大写(和Java等其他面向对象编…

    node js 2023年6月8日
    00
  • js select option对象小结

    下面是针对“js select option对象小结”的完整攻略: 什么是select option对象 select option对象是指HTML中的下拉列表控件(\<select>标签)中的选项(\<option>标签)的一种JavaScript对象表示方式,它包含了选项的各种属性以及相关方法,可以通过这个对象来动态修改下拉列表内…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部