Node.js 框架Express路由应用的示例代码

现代 Web 开发中,Express 是一个非常流行的 Node.js 框架。它以简单易用和灵活性著称,常用于构建强大的 API 和网站应用。而路由是 Express 的核心功能之一,它允许我们定义 URL 路径及 HTTP 方法与服务器响应逻辑之间的映射。

在这篇博客中,我们将深入探讨 Express 路由的应用,了解如何设置路由、使用路由参数、和组织路由结构。提供一些实际的示例代码,以帮助您更好地理解。

1. 初始化一个 Express 项目

在我们开始之前,首先确保我们有 Node.js 环境。如果还没有安装,可以访问 Node.js 官网 下载并安装。

然后,通过以下命令初始化一个新的 Node.js 项目:

mkdir express-router-examplecd express-router-examplenpm init -y

接下来安装 Express:

npm install express

现在,我们在项目根目录下创建一个名为 app.js 的文件,该文件将用作我们的主入口。

2. 创建基本的 Express 服务器

在 app.js 文件中,开始创建一个基本的 Express 服务器:

const express = require('express');const app = express();const PORT = 3000;
app.get('/', (req, res) => {    res.send('欢迎访问 Express 路由示例!');});
app.listen(PORT, () => {    console.log(`服务器正在运行,访问 http://localhost:${PORT}`);});

运行我们的服务器:

node app.js

在浏览器中访问 http://localhost:3000,你应该能够看到“欢迎访问 Express 路由示例!”的消息。

3. 使用基本路由

在 Express 中,定义路由相对简单。我们可以使用不同的 HTTP 方法,例如 GETPOSTPUT 等。例如,添加一个关于路由的示例:

app.get('/about', (req, res) => {    res.send('这是关于页面的内容');});

当你访问 http://localhost:3000/about 时,你将看到“这是关于页面的内容”。

4. 路由参数

路由参数是 Express 中一个非常有用的功能,它允许您从 URL 中提取动态部分。比方说,我们可以创建一个用户的路由,并从路径中提取用户 ID:

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

当你访问 http://localhost:3000/user/123 时,响应将是“用户 ID:123”。

5. 使用 Query 参数

除了路由参数,Express 还支持查询参数。查询参数通过 URL 的问号(?)传递,例如 http://localhost:3000/search?query=express。下面是一个示例:

app.get('/search', (req, res) => {    const query = req.query.query;    res.send(`你搜索的内容是:${query}`);});

访问 http://localhost:3000/search?query=express,响应将是“你搜索的内容是:express”。

6. 路由分组与模块化

当应用程序变得复杂时,路由的管理可能会变得困难。为了解决这个问题,Express 允许您将路由拆分到不同的文件中。这里是如何做到这一点的示例。

首先,创建一个新的目录 routes,然后在该目录中创建 user.js 文件:

// routes/user.jsconst express = require('express');const router = express.Router();
// 用户路由router.get('/:id', (req, res) => {    const userId = req.params.id;    res.send(`用户 ID:${userId}`);});
router.get('/', (req, res) => {    res.send('用户列表');});
module.exports = router;

接下来,我们需要在 app.js 中引入这个路由:

const express = require('express');const app = express();const PORT = 3000;
const userRoutes = require('./routes/user');
app.use('/user', userRoutes); // 将用户路由挂载在 /user 之上
app.listen(PORT, () => {    console.log(`服务器正在运行,访问 http://localhost:${PORT}`);});

现在,你可以通过访问 http://localhost:3000/user/123 和 http://localhost:3000/user 来测试用户路由。

7. 中间件和自定义路由

Express 的中间件功能非常强大,它允许我们在请求处理过程中的各个阶段执行操作。您可以使用中间件来验证请求、处理数据、发送响应等等。让我们示例一下自定义中间件:

自定义中间件

下面是一个简单的日志中间件:

app.use((req, res, next) => {    console.log(`${req.method} ${req.url}`);    next(); // 调用下一个中间件});

将上面的中间件添加到 app.js 文件中,您可以在控制台看到每个请求的详细信息。

处理错误

您还可以创建一个错误处理中间件,它会捕获所有未处理的请求错误:

app.use((err, req, res, next) => {    console.error(err.stack);    res.status(500).send('服务器出现了一个错误!');});

8. 总结

在这篇博客中,我们深入探讨了 Express 路由的应用,包括如何创建基本路由、使用路由参数和查询参数、模块化路由、使用中间件等。这些功能让您能够构建复杂而强大的 Web 应用程序。

袁龙 前端智能箱

THE END