Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
T treasure
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 12
    • Issues 12
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • FE
  • treasure
  • Issues
  • #121

Closed
Open
Created Dec 04, 2022 by liuyajun@liuyajunMaintainer

前端调用 yapi 接口时,使用 mock 数据方式

为什么要使用 mock 数据而不是直接调用接口

  1. mock 接口调用快
  2. mock 接口不会校验数据是否正确,前端在初步联调时无需考虑数据的问题,可以更关注于页面交互
  3. 版本开发中,在前中期无法比较顺利给出可以联调的接口
  4. 接口一般先写文档再写接口,文档初步定义好了结构和字段后,就可以先照着写一份 mock 数据,而不用等待几天之后的接口完成
  5. 后端不稳定的情况时,前端需要获取数据时,可以临时更换为 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);
}
  • isMock true 代表调用 mock 接口,使用 mock 数据
  • mockProjectId 代表 api 的项目 id,如 邻汇吧后台为 36,业务中心-订单中台为 420 image

一般只需要配置这两个参数即可,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 数据: image

如果页面上的 “发送” 按钮置灰无法点击,需要安装插件

  1. 下载并解压 cross-request-master.zip cross-request-master.zip
  2. 谷歌浏览器-设置-更多工具-扩展程序-开发者模式打开,点击 “加载已解压的扩展程序”
  3. 刷新接口文档页面,“发送” 按钮可以点击了

mock 数据

mock 数据有两种写入方式

  1. 在文档编辑之后,根据文档内字段的 类型和mock 自动生成 image image
  2. 文档页面-高级Mock-添加期望,添加自定义的 mock 数据;如果一个接口需要返回多个 mock,填写不同的参数即可,会根据参数找到对应的 mock 数据 image

其他

如果一个项目文档的所有 mock 接口调用都是 404,查看文档配置是否有问题,图中报错是因为项目的基本路径没有使用统一的前缀 /api image

应该是这样配置 image

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking