1. 路由的概念
- 在Express中, 路由指的客户端的请求与服务器处理函数之间的映射关系。
- Express中的路由分3部分组成, 分别是:请求的类型、请求的URL地址、处理函数,
格式如下:app.method(path, handler)
const express = require("express");
const app = express();
app.get("/user", (req, res) => {
console.log(req);
console.log(res);
res.send("Hello World!");
});
app.post("/add", (req, res) => {
console.log(req)
console.log(res)
res.send("Got a POST request");
});
app.listen("80", () => {
console.log("服务运行起来了.....");
});
2. 路由的匹配过程:
每当一个请求到达服务器之后, 需要先警告路由的匹配,只有匹配成功之后, 才会调用对应的处理函数。
在匹配时, 会按照路由的顺序进行匹配, 如果请求类型和请求的URL同时匹配成功, 则Express会将这次请求转交给对应的function函数进行处理。
注意:按照定义的先后顺序进行匹配
请求类型和请求的URL同时匹配成功, 才会调用对应的处理函数。
3. 模块化路由
为了方便对路由进行模块化管理,Express不建议将路由直接挂载到app上, 而是推介将路由抽离为单独的模块。将路由抽离为单独模块的步骤如下:
创建路由模块对应的.js文件
- 调用express.Router()函数创建路由对象
- 像路由对象上挂载具体的路由
- 使用module.exports向外共享路由对象
- 使用app.use函数注册路由模块
const express = require("express");
const app = express();
const router = require('./router');
app.use(router)
app.listen("80", () => {
console.log("服务运行起来了.....");
});
const express = require('express');
const router = express.Router();
router.get('/user/list', (req, res) => {
res.send(' Get user list')
})
router.post('/user/add', (req, res) => {
res.send('add new user')
})
module.exports = router;
3.1 为路由模块添加前缀
为静态资源统一挂载访问前缀一样,路由模块添加前缀的方式也非常简单:const userRouter = require('./router/user.js');
app.use('/api', userRouter)