第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):将路由器挂载到应用中,并为路由器内的所有路由添加共同的前缀。

相关推荐

  1. 4 Express深入理解(

    2024-07-19 22:30:01       17 阅读
  2. Vue - 工作原理(深入理解)

    2024-07-19 22:30:01       40 阅读
  3. 22-协议概述

    2024-07-19 22:30:01       26 阅读
  4. 20-IP原理

    2024-07-19 22:30:01       29 阅读
  5. 静态

    2024-07-19 22:30:01       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 22:30:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 22:30:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 22:30:01       45 阅读
  4. Python语言-面向对象

    2024-07-19 22:30:01       55 阅读

热门阅读

  1. CSS实现从上往下过渡效果

    2024-07-19 22:30:01       16 阅读
  2. 每类数据保留前n条(sql)

    2024-07-19 22:30:01       13 阅读
  3. 慢查询&sql&索引优化

    2024-07-19 22:30:01       15 阅读