全书目录

第十二篇:Express 完全指南 —— 老城区主干道宇宙

第四章:路由 —— 老城区每个路口都要有牌子

1 分钟 257 字 第 242 / 962 个阅读单元

路由就是:什么车(HTTP 方法)来到什么路口(URL 路径),交给哪个窗口处理。

#1. 最基础的路口定义
js
app.get('/roads', (req, res) => {
  res.send('查看所有主干道');
});

app.post('/roads', (req, res) => {
  res.send('新增一条道路');
});

app.put('/roads/1', (req, res) => {
  res.send('更新 1 号道路');
});

app.delete('/roads/1', (req, res) => {
  res.send('删除 1 号道路');
});

可以把它理解成:

text
同一个路口 /roads
GET     = 来查
POST    = 来建
PUT     = 来改
DELETE  = 来拆
#2. 路径参数:路牌上的编号
js
app.get('/roads/:roadId', (req, res) => {
  res.json({
    roadId: req.params.roadId
  });
});

访问 /roads/108 时:

js
req.params // { roadId: '108' }
#3. 查询参数:车上带的办事单
js
app.get('/roads', (req, res) => {
  res.json({
    district: req.query.district,
    status: req.query.status
  });
});

访问:

text
/roads?district=east&status=open

得到:

js
req.query // { district: 'east', status: 'open' }
#4. 初学者最该掌握的路由规则
text
路由 = HTTP 方法 + 路径

GET    /roads
GET    /roads/:roadId
POST   /roads
PATCH  /roads/:roadId
DELETE /roads/:roadId

初学阶段,尽量使用这三种路径形式:

  • 固定字符串:/roads
  • 参数路径:/roads/:roadId
  • 嵌套资源:/districts/:districtId/roads

不要一开始就沉迷复杂正则路由。老城区先把主干道修直,比修花哨立交桥重要。