返回

Egg.js项目搭建指南:从构建项目目录到创建第一个API接口

前端

搭建Egg.js项目

Egg.js是一个基于Node.js和Koa.js的企业级全栈框架,它提供了简单、快速的开发方式,并内置了安全、高效、稳定的基础功能。要搭建一个Egg.js项目,首先需要安装Egg.js脚手架:

npm install -g @eggjs/cli

然后,创建一个新的Egg.js项目:

egg-init my-egg-project

项目创建成功后,会看到一个初始的项目目录结构:

my-egg-project/
├── app/
│   ├── controller/
│   │   └── home.js
│   ├── model/
│   ├── public/
│   ├── router.js
│   ├── service/
│   └── view/
├── config/
├── logs/
├── node_modules/
├── package.json
├── test/
└── www/

创建第一个mock接口

为了演示如何使用Egg.js构建API接口,我们将在home.js控制器中创建一个名为list的方法,该方法将返回一个模拟的数据列表。

// app/controller/home.js
module.exports = class HomeController extends Controller {
  async list() {
    const data = [
      { name: 'John', age: 20 },
      { name: 'Mary', age: 25 },
      { name: 'Bob', age: 30 },
    ];
    this.ctx.body = data;
  }
};

然后,在router.js中设置路由:

// app/router.js
module.exports = app => {
  const { router } = app;
  router.get('/home/list', 'home.list');
};

现在,可以通过发送HTTP GET请求来访问该接口:

curl http://localhost:7001/home/list

单元测试

为了确保接口的正确性,我们可以编写单元测试。在test/controller/home.test.js中添加以下测试用例:

// test/controller/home.test.js
const assert = require('assert');
const { app } = require('../mocks/app');

describe('HomeController', () => {
  describe('list', () => {
    it('should return a list of data', async () => {
      const ctx = app.mockContext();
      await app.httpRequest().get('/home/list').expect(200).end((err, res) => {
        assert.equal(res.body.length, 3);
        assert.equal(res.body[0].name, 'John');
        assert.equal(res.body[0].age, 20);
        assert.equal(res.body[1].name, 'Mary');
        assert.equal(res.body[1].age, 25);
        assert.equal(res.body[2].name, 'Bob');
        assert.equal(res.body[2].age, 30);
      });
    });
  });
});

运行单元测试:

npm run test

如果测试通过,则表明接口工作正常。

总结

本指南介绍了如何使用Egg.js构建项目、创建API接口并进行单元测试。Egg.js是一个强大而灵活的框架,它可以帮助您快速开发高质量的Web应用程序。