const express = require('express');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');
// 创建Express应用
const app = express();
// 使用body-parser中间件解析请求体
app.use(bodyParser.json());
// 模拟存储用户数据的数组
let users = [];
// 获取所有用户
app.get('/users', (req, res) => {
res.json({
code: 200,
message: 'Success',
data: users
});
});
// 获取指定id的用户
app.get('/users/:id', (req, res) => {
const id = req.params.id;
const user = users.find(user => user.id === id);
if (user) {
res.json({
code: 200,
message: 'Success',
data: user
});
} else {
res.status(404).json({
code: 404,
message: 'User not found'
});
}
});
// 创建新用户
app.post('/users', (req, res) => {
const user = req.body;
// 检查必要字段是否存在
if (!user.username || !user.email || !user.password) {
return res.status(400).json({
code: 400,
message: 'Missing required fields'
});
}
// 检查用户是否已存在
const existingUser = users.find(u => u.username === user.username || u.email === user.email);
if (existingUser) {
return res.status(409).json({
code: 409,
message: 'Username or email already exists'
});
}
user.id = user.id;
users.push(user);
res.status(201).json({
code: 201,
message: 'User created successfully',
data: user
});
});
// 更新指定id的用户
app.put('/users/:id', (req, res) => {
const id = req.params.id;
const updatedUser = req.body;
const index = users.findIndex(user => user.id === id);
if (index !== -1) {
users[index] = { ...users[index], ...updatedUser };
res.json({
code: 200,
message: 'User updated successfully',
data: users[index]
});
} else {
res.status(404).json({
code: 404,
message: 'User not found'
});
}
});
// 删除指定id的用户
app.delete('/users/:id', (req, res) => {
const id = req.params.id;
const index = users.findIndex(user => user.id === id);
if (index !== -1) {
const deletedUser = users.splice(index, 1);
res.json({
code: 200,
message: 'User deleted successfully',
data: deletedUser[0]
});
} else {
res.status(404).json({
code: 404,
message: 'User not found'
});
}
});
// 生成新用户ID(示例中使用UUID)
function generateUserId() {
return `${Date.now().toString(36)}-${Math.random().toString(36).substr(2, 9)}`;
}
// 登录接口
app.post('/api/login', (req, res) => {
const { mobile, password } = req.body;
// 这里可以根据手机号和密码进行验证,假设验证通过
if (mobile === '123456789' && password === 'password') {
// 生成 Token
const token = jwt.sign({ mobile }, 'secretKey', { expiresIn: '1h' });
// 返回 Token
res.json({ token });
} else {
// 验证失败,返回错误信息
res.status(401).json({ error: '登录失败' });
}
});
// 其他需要验证 Token 的接口
app.get('/api/protected', (req, res) => {
// 从请求头中获取 Token
const token = req.headers.authorization.split(' ')[1];
try {
// 验证 Token 是否有效
const decoded = jwt.verify(token, 'secretKey');
// 验证通过,返回受保护的数据
res.json({ data: '这是受保护的数据' });
} catch (error) {
// Token 验证失败,返回错误信息
res.status(401).json({ error: '无效的 Token' });
}
});
// 错误处理中间件
app.use((err, req, res, next) => {
console.error(err);
res.status(500).json({
code: 500,
message: 'Internal server error'
});
});
// 启动服务器
const port = 3000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
nodeJS开发简易增删改查接口
最新推荐文章于 2024-07-11 15:29:37 发布