推荐答案
// www.javascriptcn.com code example
const express = require('express');
const app = express();
app.use(express.json());
// 模拟数据
let users = [
{ id: 1, name: 'John Doe' },
{ id: 2, name: 'Jane Doe' }
];
// 获取所有用户
app.get('/users', (req, res) => {
res.json(users);
});
// 获取单个用户
app.get('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ message: 'User not found' });
res.json(user);
});
// 创建用户
app.post('/users', (req, res) => {
const user = {
id: users.length + 1,
name: req.body.name
};
users.push(user);
res.status(201).json(user);
});
// 更新用户
app.put('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ message: 'User not found' });
user.name = req.body.name;
res.json(user);
});
// 删除用户
app.delete('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ message: 'User not found' });
const index = users.indexOf(user);
users.splice(index, 1);
res.status(204).send();
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});本题详细解读
1. 引入 Express 并初始化应用
首先,我们需要引入 Express 模块并初始化一个 Express 应用。express.json() 中间件用于解析请求体中的 JSON 数据。
const express = require('express');
const app = express();
app.use(express.json());2. 定义模拟数据
为了演示 RESTful API 的构建,我们使用一个简单的数组来模拟用户数据。
let users = [
{ id: 1, name: 'John Doe' },
{ id: 2, name: 'Jane Doe' }
];3. 实现 GET 请求
- 获取所有用户:通过
/users路径,返回所有用户数据。 - 获取单个用户:通过
/users/:id路径,返回指定 ID 的用户数据。如果用户不存在,返回 404 状态码。
// www.javascriptcn.com code example
app.get('/users', (req, res) => {
res.json(users);
});
app.get('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ message: 'User not found' });
res.json(user);
});4. 实现 POST 请求
通过 /users 路径,创建一个新用户。新用户的 ID 自动递增,并将新用户添加到数组中。返回 201 状态码表示资源创建成功。
app.post('/users', (req, res) => {
const user = {
id: users.length + 1,
name: req.body.name
};
users.push(user);
res.status(201).json(user);
});5. 实现 PUT 请求
通过 /users/:id 路径,更新指定 ID 的用户信息。如果用户不存在,返回 404 状态码。
app.put('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ message: 'User not found' });
user.name = req.body.name;
res.json(user);
});6. 实现 DELETE 请求
通过 /users/:id 路径,删除指定 ID 的用户。如果用户不存在,返回 404 状态码。删除成功后,返回 204 状态码表示无内容。
app.delete('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ message: 'User not found' });
const index = users.indexOf(user);
users.splice(index, 1);
res.status(204).send();
});7. 启动服务器
最后,设置服务器监听的端口,并启动服务器。
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});