大家好,我是村长!
前面我们学习了数据库管理和设计相关操作,并且添加了一些初始数据,接下来就是编写接口获取数据了。
但是在实际开发中是不会直接开撸代码的,通常大家需要先讨论并设计出接口文档,然后前后端才按照文档分头行动。
这个流程是有标准可循的,比如早先的 Swagger(Open API),会按照规范先设计接口,定好接口用例,编写模拟数据规则供前端开发使用,开发完接口再调用接口用例调试接口,这个过程很多步骤需要手动完成,且要在不同工具间切换,比较麻烦。
我们计划在项目中将使用 Apifox 统一完成这些任务以提高效率,本节内容如下:
- 接口设计流程;
- 安装 Apifox;
- 接口设计;
- 接口用例和调试;
- 接口 mock;
- 代码生成。
接口设计流程
设计接口基本上遵循下面流程:
前端(或后端)在 Apifox 上定好
接口文档
初稿。前后端一起评审、完善
接口文档
,定好接口用例
。前端使用系统根据接口文档自动生成的
Mock 数据
进入开发,无需手写 mock 规则。后端使用
接口用例
调试开发中接口,只要所有接口用例调试通过,接口就开发完成了。如开发过中接口有变化,调试的时候就自动更新了文档,零成本保障了接口维护的及时性。后端每次调试完一个功能就保存为一个
接口用例
。测试人员直接使用
接口用例
测试接口。所有接口开发完成后,测试人员(也可以是后端)使用
集合测试
功能进行多接口集成测试,完整测试整个接口调用流程。前后端都开发完,前端从
Mock 数据
切换到正式数据
,联调通常都会非常顺利,因为前后端双方都完全遵守了接口定义的规范。
安装 Apifox
Apifox 有两种使用方式:
- Web版:https://www.apifox.cn/web
- 客户端:官网下载
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 环境
生成代码片段如下:
总结
好了,关于接口设计就跟小伙伴们介绍到这里了。我们总结一下,要设计一个接口,我们需要:
- 创建接口和数据模型;
- 定义请求参数;
- 添加响应示例;
- 调试接口;
- 调整 mock 规则等细节。
应该说涵盖了比较重要的部分,不过还是有一些细节的东西需要大家额外花时间探究一下。
下次预告
现在可以说万事俱备只欠东风,下一步我们就可以开始真正的接口开发工作了。
下节课我们会使用 Prisma 这样的 node.js ORM 框架编写接口,这样我们直接编写 node 代码即可请求数据库,而不用编写繁杂的 SQL 语句,可以在开发效率和可维护性上大幅提升。