Express 路由

在构建 Web 应用程序时,路由是处理不同 URL 请求的核心机制。Express.js 是 Node.js 上最流行的轻量级框架之一,它简化了路由的定义和管理过程。本文将深入介绍如何使用 Express 进行路由配置,帮助你快速上手并掌握其核心概念。

什么是路由?

路由是指根据 HTTP 请求的 URL、方法(GET、POST 等)等信息来确定如何响应客户端请求的过程。在 Express 中,路由由请求方法、请求路径以及处理函数组成。通过设置不同的路由规则,可以实现对网站或 API 的精细化控制。

安装 Express

首先确保你的开发环境中已安装 Node.js 和 npm。接下来,可以通过以下命令创建一个新的项目并安装 Express:

mkdir myapp
cd myapp
npm init -y
npm install express --save

基本路由

设置基本路由

下面是一个简单的例子,展示了如何为不同的 HTTP 方法定义路由:

const express = require('express');
const app = express();// GET 请求
app.get('/', (req, res) => {res.send('Hello World!');
});// POST 请求
app.post('/submit', (req, res) => {res.send('Received a POST request at /submit');
});// PUT 请求
app.put('/update', (req, res) => {res.send('Received a PUT request at /update');
});// DELETE 请求
app.delete('/delete', (req, res) => {res.send('Received a DELETE request at /delete');
});const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));

动态路由

除了静态路径外,Express 还支持动态路径参数。例如,如果你想要获取用户 ID 来显示特定用户的资料页,你可以这样做:

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

访问 /user/123 将返回 User ID: 123

路由中间件

中间件是在请求到达最终的路由处理器之前执行的函数。它们可用于执行各种任务,如日志记录、身份验证等。

使用中间件

app.use((req, res, next) => {console.log(`${req.method} request for '${req.url}'`);next();
});app.get('/example', (req, res) => {res.send('This is an example route.');
});

上述代码会在每次请求到来时打印出请求的方法和 URL。

错误处理中间件

错误处理中间件需要四个参数,按照 (err, req, res, next) 的顺序排列。

app.use((err, req, res, next) => {console.error(err.stack);res.status(500).send('Something broke!');
});

路由模块化

随着应用的增长,保持路由逻辑的整洁变得尤为重要。Express 支持将路由分离到单独的文件中,这有助于提高代码的可维护性。

创建路由文件

创建一个名为 users.js 的文件,并添加如下内容:

const express = require('express');
const router = express.Router();router.get('/', (req, res) => {res.send('List of users');
});router.get('/:id', (req, res) => {res.send(`User with ID ${req.params.id}`);
});module.exports = router;

然后,在主文件中导入并使用这个路由模块:

const userRoutes = require('./users');
app.use('/users', userRoutes);

现在,当你访问 /users/users/123 时,相应的路由处理函数会被调用。

结语

希望这篇文章能够帮助你在 Express 路由方面打下坚实的基础。如果你有任何问题或者想要分享你的经验,请留言交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15988.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.11寒假作业

web:[SWPUCTF 2022 新生赛]js_sign 打开环境是这样的,随便输入进行看看 提示错误,看源码其中的js代码 这个代码很容易理解,要让输入的内容等于对应的字符串,显然直接复制粘贴是错的 这串字符看起来像是base64加密&…

innovus如何分步长func和dft时钟

在Innovus工具中,分步处理功能时钟(func clock)和DFT时钟(如扫描测试时钟)需要结合设计模式(Function Mode和DFT Mode)进行约束定义、时钟树综合(CTS)和时序分析。跟随分…

《DeepSeek技术应用与赋能运营商办公提效案例实操落地课程》

大模型算法实战专家—周红伟老师 法国科学院数据算法博士/曾任阿里巴巴人工智能专家/曾任马上消费企业风控负责人 课程背景 随着大模型技术的迅猛发展,企业面临着提升工作效率、降低运营成本和优化资源配置的巨大压力。DeepSeek做出十三项革命性的大模型技术突破…

大模型基本原理(二)——ChatGPT的工作原理

如何得到一个ChatGPT? 1、无监督预训练:通过大量的文本数据集进行无监督训练,得到一个基座模型(只会续写文本) 2、监督微调:通过一些人类撰写的高质量对话数据对基座模型进行监督微调,得到一个…

示例代码:C# MQTTS双向认证(客户端)(服务器EMQX)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

mosquitto配置桥接

同一终端中两个broker,其中一个做桥将1883端口的消息导出到1884: mosq.conf 多个服务器搭建mosquitto集群: mosquitto配置桥接_mosquitto 桥接-CSDN博客

通过Chatbox和API实现本地使用DeepSeek(R1满血版)

1、注册用户,申请API DeepSeek满血版api注册链接(注册即送2000万Token) 1.1 注册:https://cloud.siliconflow.cn/i/yl6uVodF 1.2 注册完成之后,申请API密钥 2、下载Chatbox 2.1 下载安装包:https://cha…

[学习笔记] Kotlin Compose-Multiplatform

Compose-Multiplatform 原文:https://github.com/zimoyin/StudyNotes-master/blob/master/compose-multiplatform/compose.md Compose Multiplatform 是 JetBrains 为桌面平台(macOS,Linux,Windows)和Web编写Kotlin UI…

【deepseek-r1本地部署】

首先需要安装ollama,之前已经安装过了,这里不展示细节 在cmd中输入官网安装命令:ollama run deepseek-r1:32b,开始下载 出现success后,下载完成 接下来就可以使用了,不过是用cmd来运行使用 可以安装UI可视化界面&a…

(篇六)基于PyDracula搭建一个深度学习的软件之新版本ultralytics-8.3.28调试

ultralytics-8.3.28版本debug记录 1传入文件 代码太多不粘贴在这里了,完整代码写在了篇三 def open_src_file(self):config_file config/fold.jsonconfig json.load(open(config_file, r, encodingutf-8))open_fold config[open_fold]if not os.path.exists(op…

寒假2.8

题解 web:[RoarCTF 2019]Easy Calc 打开,是一个计算界面 看一下源代码,提示设置了WAF,并且有一个calc.php文件 访问一下calc.php文件,得到源码,使用get方式传参赋值给num,设置了黑名单&#x…

pytest测试专题 - 1.2 如何获得美观的测试报告

<< 返回目录 1 pytest测试专题 - 1.2 如何获得美观的测试报告 1.1 背景 虽然pytest命令的报文很详细&#xff0c;用例在执行调试时还算比较方便阅读和提取失败信息&#xff0c; 但对于大量测试用例运行时&#xff0c;可能会存在以下不足 报文被冲掉测试日志没法归档 …

让office集成deepseek,支持office和WPS办公软件!(体验感受)

导读 AIGC:AIGC是一种新的人工智能技术&#xff0c;它的全称是Artificial Intelligence Generative Content&#xff0c;即人工智能生成内容。 它是一种基于机器学习和自然语言处理的技术&#xff0c;能够自动产生文本、图像、音频等多种类型的内容。这些内容可以是新闻文章、…

QML布局和信号槽

目录 一、定位器&#xff08;Positioners&#xff09; 1.Row&#xff08;行定位器&#xff09; 2.Column&#xff08;列定位器&#xff09; 3.Grid&#xff08;表格定位器&#xff09; 二、Layout布局 1.RowLayout&#xff08;行布局&#xff09; 2.ColumnLayout&#x…

C++ Primer 类型转换

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

.Net使用EF Core框架如何连接Oracle

目录 一、Nutget包添加 二、 配置文件 三、创建实体类 四、创建数据库上下文类 五、将数据库上下文服务注册到容器 六、测试数据库数据 &#xff08;1&#xff09;编写PeopleController &#xff08;2&#xff09;编写People页面 一、Nutget包添加 一定要安装Oracle.Ma…

30~32.ppt

目录 30.导游小姚-介绍首都北京❗ 题目​ 解析 31.小张-旅游产品推广文章 题目 解析 32.小李-水的知识❗ 题目​ 解析 30.导游小姚-介绍首都北京❗ 题目 解析 新建幻灯片-从大纲-重置-检查设计→主题对话框→浏览主题&#xff1a;考生文件夹&#xff08;注意&#x…

2025 年 2 月 TIOBE 指数

2025 年 2 月 TIOBE 指数 二月头条:快,更快,最快! 现在,世界需要每秒处理越来越多的数字,而硬件的发展速度却不够快,程序的速度变得越来越重要。话虽如此,快速编程语言在 TIOBE 指数中取得进展也就不足为奇了。编程语言 C++ 最近攀升至第 2 位,Go 已稳居前 10 名,Ru…

【Flink源码分析】5. Flink1.19源码分析-异步编程(CompletableFuture)

5 CompletableFuture 实现异步编排&#xff1b;获取异步任务执行的结果。 CompletableFuture提供了几十种方法&#xff0c;辅助我们的异步任务场景。这些方法包括创建异步任务、异步任务回调、多个任务组合处理等方面。 5.1 supplyAsync 方法 supplyAsync 执行 Completable…

LabVIEW在呼吸机测试气体容量计算

在呼吸机测试中&#xff0c;精确测量气体容量变化是评估设备性能的关键步骤。通过监测呼吸机气道内的压力变化&#xff0c;并结合流阻和肺顺应性等参数&#xff0c;可以计算出单位时间内的气体容量变化。本案例基于LabVIEW实现该计算过程&#xff0c;以确保测试数据的准确性和一…