前端调用 yapi 接口时,使用 mock 数据方式
为什么要使用 mock 数据而不是直接调用接口
- mock 接口调用快
- mock 接口不会校验数据是否正确,前端在初步联调时无需考虑数据的问题,可以更关注于页面交互
- 版本开发中,在前中期无法比较顺利给出可以联调的接口
- 接口一般先写文档再写接口,文档初步定义好了结构和字段后,就可以先照着写一份 mock 数据,而不用等待几天之后的接口完成
- 后端不稳定的情况时,前端需要获取数据时,可以临时更换为 mock 数据,而不用等待后端修复
如何调用 mock 接口
前端项目内一般默认进行了配置,以 邻汇吧后台 为例
/**
* 场地、展位进场资料列表
* https://yapi.lanhanba.com/project/29/interface/api/33435
*/
export function getCommunitiesMaterials(param, successCallback, errorCallback) {
const configParams = { isMock: false, mockProjectId: 29 };
get('/api/inner/communities/materials', param, successCallback, errorCallback, errorCallback, configParams);
}
一般只需要配置这两个参数即可,mock 调用项目中配置了只在开发环境生效。
saas-manage 后台实例
/*
* 供应商列表
* https://yapi.lanhanba.com/project/399/interface/api/38947
*/
export function postTenantSupplierListQuery(params?: any) {
return post('/tenant/supplier/list', { ...params }, {
isMock: false,
needHint: true,
needCancel: false,
mockId: 399,
// proxyApi: '/passenger-flow'
});
};
/*
* 【供应商联系人信息】列表-不分页
* https://yapi.lanhanba.com/project/399/interface/api/41656
*/
export function postTenantSupplierContactPageQuery(params?: any) {
return post('/tenant/supplierContact/list', { ...params }, {
isMock: false,
needHint: true,
needCancel: false,
mockId: 399,
// proxyApi: '/passenger-flow'
});
};
mock 接口插件
在调用前还需要确认接口文档是否提供了 mock 数据,在该接口页面的 “运行” tab 下面点击 “发送” 按钮,即可预览 mock 数据:
如果页面上的 “发送” 按钮置灰无法点击,需要安装插件
- 下载并解压 cross-request-master.zip cross-request-master.zip
- 谷歌浏览器-设置-更多工具-扩展程序-开发者模式打开,点击 “加载已解压的扩展程序”
- 刷新接口文档页面,“发送” 按钮可以点击了
mock 数据
mock 数据有两种写入方式
- 在文档编辑之后,根据文档内字段的 类型和mock 自动生成
- 文档页面-高级Mock-添加期望,添加自定义的 mock 数据;如果一个接口需要返回多个 mock,填写不同的参数即可,会根据参数找到对应的 mock 数据
其他
如果一个项目文档的所有 mock 接口调用都是 404,查看文档配置是否有问题,图中报错是因为项目的基本路径没有使用统一的前缀 /api