返回

用 Egg.js、MySQL 和 CentOS 从头开始构建 CRUD 在线 Web 服务

前端

前言

随着前端技术的发展,前端工程师不再仅仅局限于页面展示,而是需要承担更多的后端开发任务。本文将指导你使用 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 服务奠定坚实的基础。