1. 路由的概念
1. 什么是路由
? ? ? ? 廣義上來講,路由就是映射關系
2. Express 中的路由
? ? ? ? 在 Express 中,路由指的是客戶端的請求與服務器處理函數之間的映射關系
? ? ? ? Express 中的路由分三部分:請求的類型、請求的URL地址,處理函數。如下:
app.METHOD(PATH, HANDLER)
3. Express 中路由的例子
// 匹配 GET 請求,且請求 URL 為 /
app.get('/', function(req, res) {res.send('ABC')
})// 匹配 POST 請求,且請求 URL 為 /
app.post('/', function(req, res) {res.send('DEF')
})
4. 路由的匹配過程
? ? ? ? 一個請求到服務器后,需要先經過路由的匹配,只有匹配成功之后,才 會調用對應的處理函數
? ? ? ? 在匹配時,會按照路由的順序進行匹配,如果請求類型和請求的URL同時匹配成功,則Express會將這次請求,轉交給對應的 function 函數進行處理
2. 路由的使用
1. 最簡單的用法
? ? ? ? 把路由掛載到 app 上,示例如下:
const express = require('express')
const app = express()// 掛載路由
app.get('/', (req, res) => { res.send('GET') })
app.post('/', (req, res) => { res.send('POST') })app.listen('8080', () => { console.log('啟動') })
2. 模塊化路由
? ? ? ? 為了方便對路由進行模塊化的管理,Express 不建議將路由直接掛載到 app 上
? ? ? ? 推薦將路由抽離為單獨的模塊
? ? ? ? 步驟:
? ? ? ? ? ? ? ? ① 創建路由模塊對應的 js 文件
? ? ? ? ? ? ? ? ② 調用 express.Router() 函數創建路由對象
????????????????③ 向路由對象上掛載具體的路由
? ? ? ? ? ? ? ? ④ 使用 module.express 向外共享路由對象
? ? ? ? ? ? ? ? ⑤ 使用 app.use() 函數注冊路由模塊
????????????????
3. 創建路由模塊
// 1
const express = require('express')
const router = express.Router()// 2
router.get('/user/list', (req, res) => { res.send('list') })
router.post('/user/add', (req, res) => { res.send('add') })// 3
module.exports = router
4. 注冊路由模塊
// 1. 導入路由模塊
const userRouter = require('./router/user.js')// 2. 使用 app.use() 注冊路由模塊
app.use(userRouter)
5. 為路由模塊添加前綴
? ? ? ? 類似于托管靜態資源掛載訪問前綴
// 導入路由
const userRouter = require('./router/user.js')// 注冊路由模塊,添加統一的訪問前綴
app.use('/api', userRouter)