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)
