Express框架之后端路由
什么是后端路由?
- 对每一个请求的分别处理就叫做后端路由。
什么是路由表?
-
express的路由表
- express框架单独提供的API,不进行路由的处理,只是单独配置一张表;把配置好的表交给服务,让服务按照这个表的配置进行路由。
- express这个对象身上有一个成员:Router,是一个函数,当这个函数执行的时候会返回一个空的路由表,我们可以对这张路由表进行路由配置,并将路由表挂载到服务上。
-
代码演示:
const express = require('express') const app = express() // 这里拿到的是一张空的路由表 const router = express.Router() // 例如给路由表分别配置一个 get / post 请求的路由 router .get('/a', (req, res) => { res.send('我是get请求的 /a 路由标识符')}) .post('/a', (req, res) => { res.send('我是post请求的 /a 路由标识符')}) app.listen(8080, () => { console.log(running at port 8080)})
模块化开发的方式配置路由
-
使用模块化开发的方式,把路由配置单独分离出去。
-
路由配置按照请求分类或按照业务逻辑分类,分离到route文件夹中,将配置后的路由表导出,在服务中导入,使用app.use()来将路由表挂载到服务上。
-
代码演示:
// 这里是分离出去的 users 路由表,这里创建出一个表就可以了 const router = require('express').Router() router .get('/a', (req, res) => { res.send('我是get请求的 /a 路由标识符')}) // 导出一个路由表 module.exports = router
// 这里是网站服务,我们需要将分离出去配置后的表导入到这里来,并使用app.use将该路由表挂载到服务上 const express = require('express') const app = express() // 将 users 路由表导入 const usersRouter = require('./route/users') // 将路由表挂载到服务上 app.use(usersRouter) app.listen(8080, () => { console,log(running at port 8080)})
-
使用模块化开发的方式配置路由表,可以让我们的业务逻辑更加清晰,方便地管理和维护我们的代码;但是以上面这种方式挂载路由表会出现一个问题 ——
挂载路由表出现的问题:
- 首先app.use 是有执行顺序的,当它挂载了多张路由表之后,就会出现后面的路由去前面的路由表空跑。
- 所以当你需要挂载多个路由表,最好将其进行分类(即:创建一级路由),将不属于当前路由的请求不要进入。
- 例如用户相关的路由,标识符以 /users 开头;商品相关的路由,标识符以 /goods 开头
- 了解app.use()
- app.use()的第一个参数是可选的,默认是 ‘*’ ,可以在这里写一个字符串,表示以这个字符串开头的标识符,使用第二个参数挂载的内容
- 总结:使用app.use(‘users’, usersRouter) 来挂载路由表,当然这样的方式我们可以将它称为是users表的一级路由,usersRouter里的路由表配置为二级路由。
小怪留言:有些知识点比较少用到,忘记了不可怕,有空回来看看吖