首先,创建一个新的文件夹,并在其中初始化一个新的Node.js项目:
mkdir express-api-example
cd express-api-example
npm init -y
然后,安装所需的依赖:
npm install express nodemon cors mysql2 sequelize
接下来,创建一个名为app.js的文件,作为项目的入口文件:
const express = require('express');
const cors = require('cors');
const sequelize = require('./models');
const app = express();
// 中间件
app.use(cors());
app.use(express.json());
// 路由
app.use('/api/users', require('./routes/users'));
// 同步数据库模型
sequelize.sync()
.then(() => {
console.log('Database synced');
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
})
.catch((err) => {
console.error('Unable to sync database:', err);
});
在models文件夹中,创建一个名为index.js的文件,用于配置和导出Sequelize实例:
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql',
});
module.exports = sequelize;
在models文件夹中,创建一个名为user.js的文件,定义User模型:
const { DataTypes } = require('sequelize');
const sequelize = require('./index');
const User = sequelize.define('User', {
uid: {
type: DataTypes.INTEGER.UNSIGNED,
primaryKey: true,
autoIncrement: true,
},
name: {
type: DataTypes.STRING(32),
allowNull: false,
},
password: {
type: DataTypes.STRING(64),
allowNull: false,
},
phone: {
type: DataTypes.STRING(20),
defaultValue: null,
},
created: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
},
activated: {
type: DataTypes.DATE,
defaultValue: null,
},
authCode: {
type: DataTypes.STRING(64),
defaultValue: null,
},
}, {
tableName: 'users',
timestamps: false,
indexes: [
{
name: 'idx_name',
fields: ['name'],
},
{
name: 'idx_phone',
fields: ['phone'],
},
],
});
module.exports = User;
在routes文件夹中,创建一个名为users.js的文件,定义用户相关的路由:
const express = require('express');
const User = require('../models/user');
const router = express.Router();
// 获取所有用户
router.get('/', async (req, res) => {
try {
const users = await User.findAll();
res.json(users);
} catch (err) {
console.error(err);
res.status(500).json({ message: 'Server Error' });
}
});
// 创建新用户
router.post('/', async (req, res) => {
try {
const { name, password, phone } = req.body;
const user = await User.create({ name, password, phone });
res.json(user);
} catch (err) {
console.error(err);
res.status(500).json({ message: 'Server Error' });
}
});
module.exports = router;
最后,在package.json文件中添加一个启动脚本:
"scripts": {
"start": "nodemon app.js"
}
现在,你可以通过运行以下命令来启动服务器:
npm start
服务器将在端口3000上运行,你可以使用类似Postman的工具来测试API端点。
这是一个基本的Express后端API项目示例,演示了如何使用Express、Sequelize和MySQL创建一个简单的用户管理API。你可以在此基础上添加更多的路由、中间件和功能,以满足你的具体需求。