1. 路由的概念

  • Express中, 路由指的客户端的请求与服务器处理函数之间的映射关系。
  • Express中的路由分3部分组成, 分别是:请求的类型、请求的URL地址、处理函数,
  • 格式如下:app.method(path, handler)

    1. const express = require("express");
    2. const app = express();
    3. app.get("/user", (req, res) => {
    4. console.log(req);
    5. console.log(res);
    6. res.send("Hello World!");
    7. });
    8. app.post("/add", (req, res) => {
    9. console.log(req)
    10. console.log(res)
    11. res.send("Got a POST request");
    12. });
    13. app.listen("80", () => {
    14. console.log("服务运行起来了.....");
    15. });

    2. 路由的匹配过程:

    每当一个请求到达服务器之后, 需要先警告路由的匹配,只有匹配成功之后, 才会调用对应的处理函数。
    在匹配时, 会按照路由的顺序进行匹配, 如果请求类型和请求的URL同时匹配成功, 则Express会将这次请求转交给对应的function函数进行处理。
    clipboard.png
    注意:

  • 按照定义的先后顺序进行匹配

  • 请求类型和请求的URL同时匹配成功, 才会调用对应的处理函数。

    3. 模块化路由

    为了方便对路由进行模块化管理,Express不建议将路由直接挂载到app上, 而是推介将路由抽离为单独模块。将路由抽离为单独模块的步骤如下:

  • 创建路由模块对应的.js文件

  • 调用express.Router()函数创建路由对象
  • 像路由对象上挂载具体的路由
  • 使用module.exports向外共享路由对象
  • 使用app.use函数注册路由模块
    1. const express = require("express");
    2. const app = express();
    3. const router = require('./router');
    4. app.use(router)
    5. app.listen("80", () => {
    6. console.log("服务运行起来了.....");
    7. });
    8. const express = require('express');
    9. const router = express.Router();
    10. router.get('/user/list', (req, res) => {
    11. res.send(' Get user list')
    12. })
    13. router.post('/user/add', (req, res) => {
    14. res.send('add new user')
    15. })
    16. module.exports = router;

    3.1 为路由模块添加前缀

    为静态资源统一挂载访问前缀一样,路由模块添加前缀的方式也非常简单:
    1. const userRouter = require('./router/user.js');
    2. app.use('/api', userRouter)