Skip to content

大家好,我是村长!

前面我们学习了数据库管理和设计相关操作,并且添加了一些初始数据,接下来就是编写接口获取数据了。

但是在实际开发中是不会直接开撸代码的,通常大家需要先讨论并设计出接口文档,然后前后端才按照文档分头行动。

这个流程是有标准可循的,比如早先的 Swagger(Open API),会按照规范先设计接口,定好接口用例,编写模拟数据规则供前端开发使用,开发完接口再调用接口用例调试接口,这个过程很多步骤需要手动完成,且要在不同工具间切换,比较麻烦。

我们计划在项目中将使用 Apifox 统一完成这些任务以提高效率,本节内容如下:

  • 接口设计流程;
  • 安装 Apifox;
  • 接口设计;
  • 接口用例和调试;
  • 接口 mock;
  • 代码生成。

接口设计流程

设计接口基本上遵循下面流程:

  1. 前端(或后端)在 Apifox 上定好接口文档初稿。

  2. 前后端一起评审、完善接口文档,定好接口用例

  3. 前端使用系统根据接口文档自动生成的 Mock 数据进入开发,无需手写 mock 规则。

  4. 后端使用接口用例 调试开发中接口,只要所有接口用例调试通过,接口就开发完成了。如开发过中接口有变化,调试的时候就自动更新了文档,零成本保障了接口维护的及时性。

  5. 后端每次调试完一个功能就保存为一个接口用例

  6. 测试人员直接使用接口用例测试接口。

  7. 所有接口开发完成后,测试人员(也可以是后端)使用集合测试功能进行多接口集成测试,完整测试整个接口调用流程。

  8. 前后端都开发完,前端从Mock 数据切换到正式数据,联调通常都会非常顺利,因为前后端双方都完全遵守了接口定义的规范。

安装 Apifox

Apifox 有两种使用方式:

Web 端大部分功能相同,缺少本地 Mock 能力,因此我们将使用客户端给大家做演示,大家首先下载系统对应客户端并安装。启动后需要扫码登录,进入之后效果如下:

创建项目

首先点击“新建项目”创建项目:

点击创建好的项目进入主视图:

接口设计

接下来点击“新建接口”准备设计我们的第一个接口,首先填入接口路径、名称等基本信息。

创建接口

我们这里创建 /course 接口,用于获取课程列表:

下面定义参数,这里传递查询参数 page 和 size 用于分页查询:

下面定义返回响应,一般是成功状态和若干错误状态,这里定义 200 状态下的响应。

点击内容格式下面的 object 可以选择响应的数据类型,我们需要一个数组,因此选择 array。

然后设置数组项,点击 ITEMS 后面的 string,设置数组项格式:

创建数据模型

这里需要一个 course 对象,可以创建一个数据模型:

下面在响应数据中选用刚创建的 Course 模型:

这就完成了接口设计!

接口用例和调试

接口一般都会有响应示例给开发者参考,例如成功响应和失败响应的数据结构。

添加响应示例

下面设置“响应示例”,点击“添加示例”:

选择“成功示例”,然后点击“自动生成”:这将会为我们的接口文档生成响应示例:

点击“确定”之后别忘了点击“保存”。

调试接口

接下来我们调试接口,点击“运行”按钮,或进入“运行”页签:

点击右上角环境选择,选择“本地Mock”:

然后点击“发送”就可以调试接口了!

效果如下:请求成功了!

添加接口用例

可以看到我们请求接口的时候会有各种各样的用法:传参、不传参、设置请求头、cookie,甚至传递错误的数据等等。 每种用法都是一个接口用例。 前面演示中如果点击“保存为用例”,将会快速创建接口用例。

点“确定”,效果如下:这样可以随时再次调试接口了!

接口 mock

前面并没有开发任何接口,请求却可以成功,是因为有本地 mock 服务。

接口 mock 可以让前端在没有开发接口的情况下开始开发工作,保证了开发效率。我们可以点击文档 - 本地 Mock,复制url:

就可以请求该接口进行前端开发了!

手动设置 mock 规则

Mock 数据是根据“返回响应”定义的结果对象自动生成的,这就可能造成生成数据不是期望结果的情况。例如前面案例中生成的 cover 字段的值就不是我们期待的图片链接:

此时,可以手动设置 mock 规则,从而达到期望:这里我设置了 Course 模型 cover 字段的 mock 规则为 @image

现在,删掉之前的响应示例,重新生成结果如下:可以看到 cover 达到了期望!

高级 mock

当然 mock 还有更强大的控制方式,例如“mock 期望”,可以根据不同条件获得不同的 mock 结果。

点击“高级 mock”页签,点击“新建期望”:通过设置多个期望,可以针对不同参数条件生成对应结果:

甚至还能编写 JS 脚本来控制最终生成结果:

代码生成

接口设置好了之后,对于开发者来说,“代码生成”是一个比较有用的功能,例如我想生成一段请求课程列表接口的 ts 代码,就可以点击文档 - 生成代码 - 生成业务代码:

设置生成范围等,代码风格之后,点击“生成代码”即可:

生成代码需要安装插件和 Java 环境

生成代码片段如下:

总结

好了,关于接口设计就跟小伙伴们介绍到这里了。我们总结一下,要设计一个接口,我们需要:

  1. 创建接口和数据模型;
  2. 定义请求参数;
  3. 添加响应示例;
  4. 调试接口;
  5. 调整 mock 规则等细节。

应该说涵盖了比较重要的部分,不过还是有一些细节的东西需要大家额外花时间探究一下。

下次预告

现在可以说万事俱备只欠东风,下一步我们就可以开始真正的接口开发工作了。

下节课我们会使用 Prisma 这样的 node.js ORM 框架编写接口,这样我们直接编写 node 代码即可请求数据库,而不用编写繁杂的 SQL 语句,可以在开发效率和可维护性上大幅提升。

Released under the MIT License.