REST 不是“只有 JSON”这么简单,它更像是:
给城市办事窗口制定统一规则。
比如“道路资源”:
GET /api/roads 查询全部道路
GET /api/roads/:id 查询一条道路
POST /api/roads 新建道路
PATCH /api/roads/:id 局部更新道路
DELETE /api/roads/:id 删除道路#1. 一个小型 REST API 例子
const express = require('express');
const app = express();
app.use(express.json());
let roads = [
{ id: 1, name: '中山主路', status: 'open' },
{ id: 2, name: '复兴大道', status: 'repairing' }
];
app.get('/api/roads', (req, res) => {
res.json(roads);
});
app.get('/api/roads/:id', (req, res) => {
const road = roads.find(item => item.id === Number(req.params.id));
if (!road) {
return res.status(404).json({ message: '道路不存在' });
}
res.json(road);
});
app.post('/api/roads', (req, res) => {
const newRoad = {
id: roads.length + 1,
name: req.body.name,
status: req.body.status || 'open'
};
roads.push(newRoad);
res.status(201).json(newRoad);
});
app.patch('/api/roads/:id', (req, res) => {
const road = roads.find(item => item.id === Number(req.params.id));
if (!road) {
return res.status(404).json({ message: '道路不存在' });
}
if (req.body.name !== undefined) road.name = req.body.name;
if (req.body.status !== undefined) road.status = req.body.status;
res.json(road);
});
app.delete('/api/roads/:id', (req, res) => {
roads = roads.filter(item => item.id !== Number(req.params.id));
res.status(204).send();
});
app.listen(3000);#2. 为什么 REST 风格对初学者重要
因为它帮你建立“资源”思维,而不是“随手乱开窗口”:
不够统一的路口:
/getRoadList
/createRoad
/updateRoadStatus
/removeRoadById更清晰的路口:
GET /api/roads
POST /api/roads
PATCH /api/roads/:id
DELETE /api/roads/:id#3. 一张资源关系图
资源 = 这座城里能被操作的东西
│
├── roads 道路
├── districts 行政区
├── notices 公告
└── inspectors 巡检员