Express 的处理函数几乎都长这样:
(req, res) => { ... }可以把它翻译成:
req = 来办事的请求车
res = 你发回去的回执车#1. 请求对象 req 常用路段
app.post('/roads/:roadId/inspect', (req, res) => {
console.log(req.method); // POST
console.log(req.path); // /roads/12/inspect
console.log(req.params); // { roadId: '12' }
console.log(req.query); // ?urgent=true
console.log(req.headers); // 请求头
console.log(req.body); // 请求体
res.send('ok');
});最常见的四块:
req.params:路径参数req.query:查询参数req.body:请求体req.headers:请求头
#2. 响应对象 res 常用回执方式
app.get('/ping', (req, res) => {
res.send('pong');
});
app.get('/road-json', (req, res) => {
res.json({ id: 1, name: '中山主路' });
});
app.get('/road-created', (req, res) => {
res.status(201).json({ message: '道路已登记' });
});
app.get('/go-home', (req, res) => {
res.redirect('/');
});#3. send、json、status 的心智模型
res.status(状态码) = 这份回执是什么性质
res.send(内容) = 发普通内容
res.json(对象) = 发 JSON 内容
res.redirect(地址) = 告诉对方改道
res.render(模板, 数据) = 把数据套进页面再发#4. 一个完整例子
app.get('/roads/:roadId', (req, res) => {
const { roadId } = req.params;
const { detail } = req.query;
res.status(200).json({
roadId,
detail: detail === 'full',
message: `已查询 ${roadId} 号主干道`
});
});