推荐答案
// www.javascriptcn.com code example
const express = require('express');
const app = express();
app.use(express.json());
// 模拟数据
let items = [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' }
];
// 获取所有资源
app.get('/items', (req, res) => {
res.json(items);
});
// 获取单个资源
app.get('/items/:id', (req, res) => {
const item = items.find(i => i.id === parseInt(req.params.id));
if (!item) return res.status(404).send('Item not found');
res.json(item);
});
// 创建资源
app.post('/items', (req, res) => {
const item = {
id: items.length + 1,
name: req.body.name
};
items.push(item);
res.status(201).json(item);
});
// 更新资源
app.put('/items/:id', (req, res) => {
const item = items.find(i => i.id === parseInt(req.params.id));
if (!item) return res.status(404).send('Item not found');
item.name = req.body.name;
res.json(item);
});
// 删除资源
app.delete('/items/:id', (req, res) => {
const item = items.find(i => i.id === parseInt(req.params.id));
if (!item) return res.status(404).send('Item not found');
const index = items.indexOf(item);
items.splice(index, 1);
res.status(204).send();
});
const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`Listening on port ${port}...`));本题详细解读
1. 引入 Express 并初始化应用
首先,我们通过 require('express') 引入 Express 模块,并创建一个 Express 应用实例 app。然后使用 app.use(express.json()) 中间件来解析请求体中的 JSON 数据。
2. 模拟数据
我们使用一个简单的数组 items 来模拟数据存储。每个对象代表一个资源,包含 id 和 name 属性。
3. 实现 GET 请求
- 获取所有资源:通过
app.get('/items', ...)实现,返回所有items。 - 获取单个资源:通过
app.get('/items/:id', ...)实现,根据id查找并返回对应的资源。如果找不到,返回 404 状态码。
4. 实现 POST 请求
通过 app.post('/items', ...) 实现创建新资源。新资源的 id 自动生成,name 从请求体中获取。创建成功后,返回 201 状态码和新创建的资源。
5. 实现 PUT 请求
通过 app.put('/items/:id', ...) 实现更新资源。根据 id 查找资源并更新其 name。如果找不到资源,返回 404 状态码。
6. 实现 DELETE 请求
通过 app.delete('/items/:id', ...) 实现删除资源。根据 id 查找资源并删除。如果找不到资源,返回 404 状态码。删除成功后,返回 204 状态码。
7. 启动服务器
最后,通过 app.listen 启动服务器,监听指定端口(默认为 3000)。