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日

相关文章

  • node-red File读取好保存实例讲解

    下面是node-red对于文件读取和保存的完整攻略: 1. 首先安装node-red的fs模块 在使用node-red读取和保存文件之前,需要先安装node-red的fs模块。打开终端窗口,进入到node-red的安装目录下,然后输入以下命令进行fs模块的安装: npm install fs –save 2. 读取文件 在node-red中,使用fs模块的…

    node js 2023年6月8日
    00
  • 基于Node.js的WebSocket通信实现

    关于“基于Node.js的WebSocket通信实现”的完整攻略,我将分为以下几个部分进行讲解: WebSocket通信简介 Node.js搭建WebSocket服务器 WebSocket客户端与服务器的交互 示例说明 1. WebSocket通信简介 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSoc…

    node js 2023年6月8日
    00
  • linux 下部署nodejs项目(两种方式)

    下面是 “Linux下部署nodejs项目(两种方式)” 的完整攻略。 方式一:使用pm2部署 PM2 是一个 Node.js 的进程管理工具,可以帮助我们简化 Node.js 应用程序的部署和管理。 使用pm2部署nodejs项目的步骤如下: 1. 安装PM2 可以使用npm来安装: npm install -g pm2 2. 启动nodejs应用 我们假…

    node js 2023年6月8日
    00
  • 全面了解Node事件循环

    全面了解Node事件循环攻略 Node.js基于事件驱动和非阻塞的I/O模型,事件循环是Node.js的核心机制之一。本攻略将从事件循环概念、事件循环机制、事件循环阶段以及事件循环实例等方面详细介绍Node事件循环。 事件循环概念 事件循环机制与操作系统紧密相连,它通过监听操作系统所提供的各类事件,驱动应用程序的运行。事实上,我们使用计算机时无论接触到什么,…

    node js 2023年6月8日
    00
  • Node.js中的模块机制学习笔记

    Node.js中的模块机制是其核心特性之一,它提供了一种方便、模块化的方式来组织代码,并将其打包成可复用的模块。本文将介绍Node.js中的模块机制,包括如何创建模块、如何导出和引用模块等内容。 模块的创建 在Node.js中创建一个模块非常简单,只需要在一个文件中定义一个函数、变量、类或对象即可。例如,下面是一个定义在“myModule.js”文件中的模块…

    node js 2023年6月8日
    00
  • Node.js编写CLI的实例详解

    让我来详细讲解下“Node.js编写CLI的实例详解”。 什么是CLI CLI,全称为Command Line Interface,即命令行界面。与之对应的是GUI,全称为Graphical User Interface,即图形用户界面。CLI的优势在于它可以通过命令来操作,不需要使用鼠标和触摸屏等,因此可以让用户更加高效地完成任务。而且,CLI 编程实现起…

    node js 2023年6月8日
    00
  • 详解Node.js中exports和module.exports的区别

    当我们编写 Node.js 代码时,经常会遇到 exports 和 module.exports,它们都是用来导出模块的。但它们之间有什么区别呢? 1. exports 和 module.exports 区别 在 Node.js 中,每个模块都有一个 module 对象。在 module 对象中,有一个 exports 对象,而且 exports 对象也是 …

    node js 2023年6月8日
    00
  • node.js插件nodeclipse安装图文教程

    下面我将详细讲解“node.js插件nodeclipse安装图文教程”的完整攻略,包括安装步骤、操作步骤和示例说明。 安装步骤 下载并安装Eclipse IDE for JavaScript Web Developers。可以在官网下载安装包,也可以使用Eclipse Marketplace进行安装。 在Eclipse中安装Node.js插件。打开Eclip…

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