”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Express.js 要点

Express.js 要点

发布于2024-11-07
浏览:803

Express.js Essentials

本文重点介绍 Express.js 的基本知识,它是使用 Node.js 构建后端应用程序的关键部分。我将深入探讨路由、CRUD 操作、响应方法和中间件功能,所有这些在构建健壮的 Web 应用程序中都发挥着关键作用。

概念亮点:

  1. 路由方法和 CRUD
  2. 路由参数
  3. 路由处理程序
  4. 响应方式
  5. 内置中间件功能

1. 路由方法和CRUD

在 Express.js 中,路由方法定义应用程序如何响应特定路由的不同 HTTP 请求(例如 GET、POST、PUT、DELETE)。这些方法用于在应用程序中实现 CRUD(创建、读取、更新、删除)操作。

基本 CRUD 示例: 在此示例中,每个路由根据所使用的 HTTP 方法响应不同的 CRUD 操作。

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

// Create - POST
app.post('/users', (req, res) => {
  res.send('User created');
}); 

// Read - GET
app.get('/users', (req, res) => {
  res.send('Here is the user'); 
}); 

// Update - PUT
app.put('/users/:id', (req, res) => {
  res.send('User with ID ${req.params.id} updated'); 
});

// Delete - DELETE
app.delete('/users//:id', (req, res) => {
  res.send('User with ID ${req.params.id} deleted');
}):

app.listen(3000, () => 
  console.log('Server running on port 3000')
);

2. 路由参数

路由参数允许您捕获请求 URL 的特定部分并在路由处理程序中使用它们。例如,您可以从 URL 中提取 ID 并使用它来执行与该 ID 相关的操作。

例如) 在此示例中,:id 是一个动态参数,它将被提取并在响应中使用。如果此动态参数为 123,则对 /users/123 的请求将返回“Fetching user with ID: 123.”

app.get('/users/:id', (req, res) => {
  const userId = req.params.id; 
  res.send(`Fetching user with ID: ${userId}`);
});

3. 路由处理程序

路由处理程序定义服务器如何处理 HTTP 请求。您可以在单个路由中定义多个中间件函数,从而实现更清晰和模块化的代码。

具有多个处理程序的示例: 在此示例中,第一个中间件记录消息,第二个中间件发送响应。

app.get('/users', (req, res, next) => {
  console.log('First middleware');
  next(); // call the next handler in the stack
}, (req, res) => {
  res.send('User list'); 
});

4. 应对方法

Express.js 提供了几种向客户端发送响应的方法。让我们探讨一些常用的响应方法。

a) .json() 发送 JSON 响应。

app.get('/data', (req, res) => {
  res.json({ message: 'Hello, JSON' });
});

b) .send() 发送各种类型的响应(文本、HTML、缓冲区等)。

app.get('/text', (req, res) => {
  res.send('Sending text');
});

c) .download() 将文件作为附件发送,提示用户下载。


app.get('/download', (re




版本声明 本文转载于:https://dev.to/ryoichihomma/expressjs-essentials-5e83?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1 和 $array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求...
    编程 发布于2024-11-21
  • 如何在 PyPlot 中创建平滑的线条?
    如何在 PyPlot 中创建平滑的线条?
    使用 PyPlot 绘制平滑线PyPlot 提供了多种自定义数据可视化的方法。一项常见任务是平滑绘制点之间的线条以创建更连续的外观。虽然使用“smooth cplines”选项在 Gnuplot 中创建平滑线很简单,但 PyPlot 需要稍微不同的方法。使用 scipy.interpolate 平滑...
    编程 发布于2024-11-21
  • 为什么在 Python 3 中安装 MySQL-python 时出现“ImportError: No module named \'ConfigParser\'\”?
    为什么在 Python 3 中安装 MySQL-python 时出现“ImportError: No module named \'ConfigParser\'\”?
    Python 3 ImportError:没有名为“ConfigParser”的模块尝试使用 pip 安装 MySQL-python 包时,您可能会遇到ImportError 指出“没有名为 'ConfigParser' 的模块”。为什么会发生这种情况?在 Python 3 中,Co...
    编程 发布于2024-11-21
  • 如何在 Go 中重新定义用于测试目的的常量?
    如何在 Go 中重新定义用于测试目的的常量?
    在 Go 中测试常量在 Go 中,常量是确保代码一致性和正确性的宝贵工具。然而,当涉及到单元测试时,使用常量可能会带来挑战。本文探讨了如何在 Go 中重新定义专门用于测试目的的常量。常量的挑战Go 中的常量是不可变的值,在程序执行期间无法修改。这种不变性确保了程序状态的完整性并防止意外更改。然而,在...
    编程 发布于2024-11-21
  • 如何高效统计Python中子字符串的出现次数(包括重叠情况)?
    如何高效统计Python中子字符串的出现次数(包括重叠情况)?
    计算 Python 中字符串中子字符串的出现次数一项常见的编程任务涉及确定特定子字符串在较大字符串中出现的次数。 Python 提供了多种方法来有效地完成此任务。一种简单的方法是利用 string.count() 方法。此方法将子字符串作为参数并返回字符串中出现的次数。例如:>>>...
    编程 发布于2024-11-21
  • 如何对 MySQL 中的列求和并返回单行?
    如何对 MySQL 中的列求和并返回单行?
    MySQL 中对列的元素求和在包括 MySQL 在内的许多数据库中,有时需要计算以下值的总和具体栏目。为了解决这个问题,我们将探索如何检索显示每列求和值的单行。在此场景中,我们有一个包含三列的假设表:A、B 和 C。目标是从表中选择行并让 MySQL 返回包含每列中的值之和的一行。例如,考虑下表: ...
    编程 发布于2024-11-21
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-21
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-11-21
  • 如何修复 Go 模板中的“属性值预期 css”和“at-rule 或选择器预期 css”错误?
    如何修复 Go 模板中的“属性值预期 css”和“at-rule 或选择器预期 css”错误?
    排查 Go 模板中的“属性值预期 css”和“at-rule 或选择器预期 css”错误使用 Go 模板和 html/template 包的开发人员在 Visual Studio Code (VSCode) 中可能会遇到以下错误:"属性值预期 css""at-rule ...
    编程 发布于2024-11-21
  • 如何消除 Bootstrap 堆叠行中的间隙?
    如何消除 Bootstrap 堆叠行中的间隙?
    解决 Bootstrap 堆叠行中的间隙为作品集页面构建 Bootstrap 网格时,您可能会遇到这样的问题:较长的图块在堆叠时会导致布局出现间隙发生。出现此问题的原因是网格内元素的高度不同。为了解决这个问题,存在多种解决方案:为所有投资组合元素设置高度:为每个投资组合元素建立固定高度,确保堆叠一致...
    编程 发布于2024-11-21
  • 您可以直接在方法调用中声明数组吗?
    您可以直接在方法调用中声明数组吗?
    方法调用中的内联数组声明将数组作为参数传递给方法时,通常的做法是声明数组在拨打电话之前明确说明。然而,在某些情况下,可能需要在方法调用本身中内联声明数组。要实现此目的,只需使用 new 关键字来创建新的数组实例并用所需的元素初始化它。例如,假设您有一个方法 m(),它将字符串数组作为参数。您可以直接...
    编程 发布于2024-11-21
  • 如何在 Visual Studio Code 中包含来自单独目录的头文件?
    如何在 Visual Studio Code 中包含来自单独目录的头文件?
    在 Visual Studio Code 中包含来自单独目录的头文件一些用户在将头文件组织到 Visual Studio Code 中时遇到错误单独的目录。例如,将它们移动到项目目录中名为“include”的文件夹中。要解决此问题,我们必须将 include 目录路径添加到 Visual Studi...
    编程 发布于2024-11-20
  • 为什么我的个人 Git 存储库上的“go get”失败以及如何修复它?
    为什么我的个人 Git 存储库上的“go get”失败以及如何修复它?
    在个人 Git 存储库上使用“go get”当尝试使您的某个包能够从您的包中“go get”时个人VPS,您可能会遇到错误:“package example.com/user/package: 无法识别的导入路径”。即使按照“go help importpath”文档进行看似正确的配置,也会出现此问...
    编程 发布于2024-11-20
  • Laravel API 课程
    Laravel API 课程
    Laravel 是构建强大 API 的最受欢迎的框架之一,现在,经过多年的规划,我很高兴终于能分享我的终极 Laravel API 课程!生活给我带来了一些麻烦,但感谢我超级支持的老板和 Treblle API 学院,我终于在令人惊叹的克罗地亚度过了一周的时间实现了这一目标。虽然我本可以更深入,但它...
    编程 发布于2024-11-20
  • 如何使用 Fetch API 以不同格式发送表单数据?
    如何使用 Fetch API 以不同格式发送表单数据?
    使用 Fetch API 发布表单数据使用 Fetch API 提交表单数据时,需要考虑两种主要格式:Multipart/ Form-Data使用Fo​​rmData构造请求体时,数据会自动以multipart/form-data格式发送。这是 FormData 的默认行为,无法修改。Applica...
    编程 发布于2024-11-20

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3