node完整的express后端api项目例子,使用nodemon,cors,mysql2,sequelize

186 阅读2分钟

首先,创建一个新的文件夹,并在其中初始化一个新的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。你可以在此基础上添加更多的路由、中间件和功能,以满足你的具体需求。