Skip to content

九、Express路由

1、路由的概念

1、Express中的路由

在Express中,路由指的就是客户端的请求与服务器处理函数之间的映射关系

Expres中的路由分3部分组成,分别是请求的类型、请求的URI地址、处理函数

js
app.NETHOD(PATH,HANDLER)
  • NETHOD代表请求类型
  • PATH代表请求的URI地址
  • HANDLE代表处理函数

2、Express中的路由的例子

js
//匹配GET请求,且请求URI为/
app.get('get',function(req,res)=>{
	res.send('Hello world!')
})
//匹配POST请求,且请求URI为/
app.post('get',function(req,res)=>{
	res.send('Got a POST request!')
})

3、路由匹配过程

注意:

  • 按照定义的先后顺序进行匹配
  • 请求类型和请求的URI同时匹配成功,才会调用对应的处理函数

2、路由的使用

1、最简单的用法

js
const express=require('express')
const app=express()

// 挂载路由
app.get('/',(req,res)=>{
    res.send("get")
})
app.post('/',(req,res)=>{
    res.send("post")
})

app.listen(80,()=>{
    console.log("服务器启动了");
})

注意:不建议这样子写

2、模块化路由

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

将路由抽离为单独模块的步骤如下:

  • 创建路由模块对应的js文件
  • 调用export.Router()函数创建路由对象
  • 向路由对象上挂载具体的路由
  • 使用module.export向外共享路由对象
  • 使用app.use()函数注册路由模块
js
//router.js
// 获取express
const express = require('express')
// 获取router,创建实例
const router = express.Router();

// 创建路由
router.get('/user/list', (req, res) => {
    res.send("user/list的get");
})
router.post('/user/add', (req, res) => {
    res.send("user/add的post");
})

// 导出路由
module.exports = router;
js
//test.js
const express=require('express')

const app = express()

// 导入路由
const router=require('./router')

// 注册路由
app.use(router)
// 注意:app.use()函数的作用,就是来注册全局中间件

app.listen(80,()=>{
    console.log("服务器启动了");
})

3、为路由模块添加前缀

类似于托管静态资源时,为静态资源统一挂载访问前缀一样

js
app.use("/api",router)