第4章 Express路由的深入理解(一)

在本章中,我们将深入探讨 Express 的路由机制,包括参数化路由、嵌套路由、路由前缀、路由分组和路由的高级用法。通过这些知识,读者将能够构建复杂的路由系统,以便处理各种类型的 HTTP 请求。

1 参数化路由

参数化路由允许你在 URL 中定义动态部分,可以在请求处理函数中访问这些动态部分。参数通过冒号 : 定义。

示例:

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

当用户访问 /user/123 时,响应内容将为 “User ID: 123”。

代码详解:

  • req.params:访问路由参数,返回一个对象,其中包含所有参数。
2 嵌套路由

嵌套路由用于组织和管理相关的路由,使代码更具可读性和可维护性。可以使用 express.Router 创建嵌套路由。

示例:

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

// 定义用户相关的嵌套路由
router.get('/profile', (req, res) => {
    res.send('User profile page');
});

router.get('/settings', (req, res) => {
    res.send('User settings page');
});

// 将嵌套路由挂载到应用中
app.use('/user', router);

// 启动服务器
const port = 3000;
app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
});

当用户访问 /user/profile/user/settings 时,将分别看到 “User profile page” 和 “User settings page”。

代码详解:

  • express.Router():创建一个新的路由器实例。
  • router.get('/path', callback):定义嵌套路由。
  • app.use('/prefix', router):将嵌套路由挂载到应用中,所有嵌套路由都将以 /prefix 开头。
3 路由前缀

路由前缀允许你为一组路由定义共同的前缀,使得这些路由具有相同的 URL 基础路径。这在模块化开发中非常有用。前缀和嵌套实际上是一套用法,只是应用的场景,看待问题的角度不一致。

示例:

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

// 定义管理员相关的路由
adminRouter.get('/dashboard', (req, res) => {
    res.send('Admin dashboard');
});

adminRouter.get('/settings', (req, res) => {
    res.send('Admin settings');
});

// 将路由前缀为 /admin 的路由器挂载到应用中
app.use('/admin', adminRouter);

// 启动服务器
const port = 3000;
app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
});

当用户访问 /admin/dashboard/admin/settings 时,将分别看到 “Admin dashboard” 和 “Admin settings”。

代码详解:

  • app.use('/prefix', router):将路由器挂载到应用中,并为路由器内的所有路由添加共同的前缀。
  • 17
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值