用 Egg.js、MySQL 和 CentOS 从头开始构建 CRUD 在线 Web 服务
2023-09-18 16:40:53
前言
随着前端技术的发展,前端工程师不再仅仅局限于页面展示,而是需要承担更多的后端开发任务。本文将指导你使用 Egg.js、MySQL 和 CentOS 从头开始构建一个 CRUD 在线 Web 服务,帮助你从前端开发逐步迈向全栈开发。
本教程面向有一定前端开发基础、但对后端开发不太熟悉的读者。我们将从介绍前端、后端、数据库等基本概念开始,然后逐步指导你安装和配置必要的工具,最后部署你的应用程序到真实线上服务器。
搭建环境
在开始构建 Web 服务之前,我们需要搭建一个开发环境。这里我们将使用 CentOS 作为操作系统,使用 Egg.js 作为后端框架,使用 MySQL 作为数据库。
安装 CentOS
首先,你需要安装 CentOS 操作系统。你可以从 CentOS 官网下载 ISO 镜像文件,然后使用 U 盘或光盘制作启动盘。
安装 Egg.js
Egg.js 是一个流行的 Node.js 框架,它提供了许多用于构建 Web 服务的工具和功能。要安装 Egg.js,请使用以下命令:
npm install -g egg-init
安装 MySQL
MySQL 是一个流行的数据库管理系统。要安装 MySQL,请使用以下命令:
yum install -y mysql mysql-server
创建数据库
安装完成后,你需要创建一个数据库。你可以使用以下命令:
mysql -u root -p
CREATE DATABASE my_database;
构建 Web 服务
现在,我们已经搭建好了开发环境,可以开始构建 Web 服务了。
创建 Egg.js 项目
首先,使用 Egg.js 初始化一个新项目:
egg-init my-app
安装依赖项
接下来,我们需要安装一些依赖项:
cd my-app
npm install mysql2 egg-mysql
定义模型
接下来,我们需要定义一个模型来我们的数据库表。在 app/model/user.js
中添加以下代码:
module.exports = app => {
const { STRING, INTEGER } = app.Sequelize;
const User = app.model.define('user', {
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
name: STRING(30),
age: INTEGER,
});
return User;
};
定义路由
接下来,我们需要定义路由来处理 HTTP 请求。在 app/router.js
中添加以下代码:
module.exports = app => {
const { router, controller } = app;
router.get('/users', controller.user.list);
router.post('/users', controller.user.create);
router.get('/users/:id', controller.user.show);
router.put('/users/:id', controller.user.update);
router.delete('/users/:id', controller.user.destroy);
};
定义控制器
接下来,我们需要定义控制器来处理路由请求。在 app/controller/user.js
中添加以下代码:
module.exports = app => {
class UserController extends app.Controller {
async list(ctx) {
const users = await ctx.model.User.findAll();
ctx.body = users;
}
async create(ctx) {
const user = await ctx.model.User.create(ctx.request.body);
ctx.body = user;
}
async show(ctx) {
const user = await ctx.model.User.findByPk(ctx.params.id);
if (!user) {
ctx.status = 404;
ctx.body = 'Not Found';
} else {
ctx.body = user;
}
}
async update(ctx) {
const user = await ctx.model.User.findByPk(ctx.params.id);
if (!user) {
ctx.status = 404;
ctx.body = 'Not Found';
} else {
await user.update(ctx.request.body);
ctx.body = user;
}
}
async destroy(ctx) {
const user = await ctx.model.User.findByPk(ctx.params.id);
if (!user) {
ctx.status = 404;
ctx.body = 'Not Found';
} else {
await user.destroy();
ctx.status = 204;
}
}
}
return UserController;
};
部署 Web 服务
现在,我们已经构建好了 Web 服务,可以将其部署到真实线上服务器了。
准备服务器
首先,你需要准备一台真实线上服务器。你可以使用云服务器或 VPS 等服务。
部署 Egg.js 项目
接下来,你需要将 Egg.js 项目部署到服务器上。可以使用以下命令:
scp -r my-app user@server:/home/user/
启动 Web 服务
最后,你需要在服务器上启动 Web 服务。可以使用以下命令:
cd my-app
npm start
结论
通过本教程,你已经了解了如何使用 Egg.js、MySQL 和 CentOS 从头开始构建一个 CRUD 在线 Web 服务。你已经掌握了搭建开发环境、定义模型、定义路由和控制器、部署 Web 服务等基础技能。这些技能将为你构建更复杂的 Web 服务奠定坚实的基础。