前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【技术创作101训练营】mock工具模拟接口联调

【技术创作101训练营】mock工具模拟接口联调

原创
作者头像
俩小两
修改于 2021-01-21 02:53:25
修改于 2021-01-21 02:53:25
1.1K0
举报
文章被收录于专栏:烂笔头时光烂笔头时光
PPT第一页
PPT第一页

第一页演讲文稿:

社区的小伙伴,大家好,我是小两同学。我带来的分享主题是,mock工具模拟接口联调。

PPT第二页
PPT第二页

第二页演讲文稿:

首先聊一下,什么是Mock。

在程序设计中指的是使用模拟的对象来替代真实对象,以测试其他对象的行为。而在前端开发中,通常是指模拟数据以及生成和使用模拟数据的工具与流程。

PPT第三页
PPT第三页

第三页演讲文稿:

为什么要使用Mock工具呢?我们可以试想下以下场景:

在一个常规的项目开发流程中,假设前端开发时间 t1,后端开发时间 t2,前后端联调时间 t3,前后端同时进行开发,而后进入联调阶段,再到测试以及上线。在理想情况下,整体的项目开发时间应为是 <=max(t1,t2)+t3。但实际开发中,前端往往需要依赖一定的数据模型才能实现相对应的交互 ,而数模型又依赖着后端提供的 API 接口。在这种情况下,t1需要依赖于t2,刚刚的表达式就不成立了,相对应我们整体的项目开发时间也就delay了。

PPT第四页
PPT第四页

第四页演讲文稿:

那么,如何实现前端的无依赖独立开发以提升效率呢?

这就要引出我们今天的分享主题:mock工具模拟接口联调

PPT第五页
PPT第五页

第五页演讲文稿:

提到Mock呢,我这里给相对应的方案分为了四大类。

第一种:直接在代码中侵入式地书写静态返回数据来调试相关逻辑;

第二种:使用后端开发服务作为 Mock 服务,将未实现的功能在后端返回 Mock 数据;

第三种:通过一些本地 Mock 工具,使用项目本地化的 Mock 规则来生成 Mock 数据;

第四种:使用功能更丰富的接口管理工具来提供独立的 Mock 能力。

第一种方法我们通常直接在项目中写入模拟接口返回的静态json数据,实现对接口数据的模拟,但这种方法相对而言灵活性不够高;第二种方法,后端在没有实现功能的时候可以模拟数据返回,但这种方法仍然强依赖于后端;所以我们在这重点说明后两种方法。

PPT第六页
PPT第六页

第六页演讲文稿:

提到Mock工具,我们难免会想到Mock.js。这里的Mock.js就是属于第三种方案,通过一些本地 Mock 工具,使用项目本地化的 Mock 规则来生成 Mock 数据。

Mock.js 是前端领域流行的 Mock 数据生成工具之一,后续许多功能更丰富的工具和系统在各自的 Mock 功能部分都将它作为基础设施。

PPT第七页
PPT第七页

第七页演讲文稿:

Mock.js 的核心能力是定义了两类生成模拟数据的规范:数据模板定义规范(Data Template Definition, DTD)与数据占位符定义规范(Data Placeholder Definition, DPD),以及实现了应用相应规范生成模拟数据的方法。

PPT第八页
PPT第八页

第八页演讲文稿:

首先数据模板定义,它规范约定了可以通过“属性名|生成规则:属性值”这样的格式来生成模拟数据。

如图所示案例。

PPT第九页
PPT第九页

第九页演讲文稿:

数据占位符定义规范,则是对于随机数据的一系列常用类型预设,书写格式是'@占位符(参数 [, 参数] )'。

如图所示案例。

我们通过尝试,可以得出最后一例的结果是,随机生成了一组姓名数组,数组包含1~3个元素。

PPT第十页
PPT第十页

第十页演讲文稿:

从以上案例我们可以得出结论:占位符既可以用于单独返回指定类型的随机数据,又能结合数据模板作为模板中属性值的部分来生成更复杂的数据类型。

那我们再接着看一下,在实际项目中,如何使用Mock.js来实现模拟数据的功能。

PPT第十一页
PPT第十一页

第十一页演讲文稿:

这里以Vue项目为例。首先安装Mock.js的依赖。

PPT第十二页
PPT第十二页

第十二页演讲文稿:

然后在项目中新建mock.js文件,引入依赖,根据需要写入模拟数据。这里模拟的是get接口生成的数据,也可以模拟post接口生成的数据,会稍微复杂一点。接口命名为 api/test,注意这里使用的是正则的写法。

这里我把文件新建在 src/apis/mock 文件夹下。

PPT第十三页
PPT第十三页

第十三页演讲文稿:

在main.js文件中引入该mock文件

PPT第十四页
PPT第十四页

第十四页演讲文稿:

可直接使用axios以调用 API 接口的方式,调用我们模拟的接口就可以啦。

PPT第十五页
PPT第十五页

第十五页演讲文稿:

通过示例,我们了解到了 Mock.mock 方法,可以通过设置 url 和 type 模拟各种请求。

除此以外,Mock还提供了很多其他非常好用的方法。

例如:Mock.setup 方法可以设置拦截 Ajax 请求后的响应时间。

PPT第十六页
PPT第十六页

第十六页演讲文稿:

Mock.valid 方法验证指定数据和数据模板是否匹配,用于验证后端 API 接口返回值与对应 Mock 数据的规则描述是否冲突。

PPT第十七页
PPT第十七页

第十七页演讲文稿:

以及Mock.toJSONschema可用于将数据模板导入到支持 JSON Schema 格式的工具中。

PPT第十八页
PPT第十八页

第十八页演讲文稿:

第三种方案,除了Mock.js,还有一个js库叫Faker.js

它们的作用大致相同,在使用上略有不同。

它没有自己特定的模板语言,使用起来更像是在调用一个类。

PPT第十九页
PPT第十九页

第十九页演讲文稿:

除了第三种方案:通过一些本地 Mock 工具,使用项目本地化的 Mock 规则来生成 Mock 数据;我们还提到了第四种:使用功能更丰富的接口管理工具来提供独立的 Mock 能力。

比如:

easy mock 可视化,并且能快速生成 模拟数据 的持久化服务

easy mock是一个开源的模拟数据的平台,由于使用者较多情况下并发量过大,平台经常会崩掉,所以它也有提供了开源的代码及手册支持开发人员自己部署一个Mock平台服务。

rap2 阿里开源接口管理平台

同样也是一个支持在线模拟接口的平台

PPT第二十页
PPT第二十页

第二十页演讲文稿:

YApi 接口管理服务

这是百度家开发的一款开源接口管理服务,整体使用和 postman 的感觉很类似。旨在为开发、产品、测试人员提供更优雅的接口管理服务

PPT第二十一页
PPT第二十一页

第二十一页演讲文稿:

YAPI相对于其他Mock工具有如图特色功能可做了解,功能非常强大。

PPT第二十二页
PPT第二十二页

第二十二页演讲文稿:

除此以外呢,也有桌面端应用的Mock工具。

Apifox 桌面应用类的接口管理工具

它同样提供了很多很有效且友好的模拟数据模型的途径。

PPT第二十三页
PPT第二十三页

第二十三页演讲文稿:

以上就是今天的全部分享内容啦~ 欢迎交流

PPT内容详见 https://ppt.baomitu.com/d/55f74a5b

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【实战记录】WebSocket在vue2中的使用
官方说, WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。但是我对网络协议并不了解,用实际用途去解释它就是,它支持服务端主动给客户端发送消息。
一尾流莺
2022/12/10
3.4K0
使用Vue+Node.js+Express+Socket.io实现简易聊天室Demo并解决跨域问题
github :https://github.com/DannyZeng2/EasyChat- SimpleDemo 完整版聊天室正在更新中,欢迎大家交流:https://www.jianshu.com/p/47c221ccd393 Socket.io的默认事件列表 服务端事件 事件名称 描述 connection socket连接成功之后触发,用于初始化 message 客户端通过socket.send来传送消息时触发此事件 anything 收到任何事件时触发 disconnect socket失去连
前端小tips
2021/12/11
1.9K0
使用Vue+Node.js+Express+Socket.io实现简易聊天室Demo并解决跨域问题
腾讯云搭建多终端《你画我猜》Socket服务器
金朝麟
2017/01/19
16.6K1
腾讯云搭建多终端《你画我猜》Socket服务器
websocket深入浅出
答: 它是一种网络通信协议,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
全栈程序员站长
2022/09/14
2.3K0
websocket深入浅出
基于 socket.io 快速实现一个实时通讯应用WebSocket概念实现用socket.io实现一个实时接收信息的例子分析webSocket协议参考文章
随着web技术的发展,使用场景和需求也越来越复杂,客户端不再满足于简单的请求得到状态的需求。实时通讯越来越多应用于各个领域。
用户2356368
2019/05/07
2.5K0
基于 socket.io 快速实现一个实时通讯应用WebSocket概念实现用socket.io实现一个实时接收信息的例子分析webSocket协议参考文章
使用socket实现即时通讯聊天室
websocket早在几年前就已经很流行了,主要就是用于即时通讯这一方面应用,可以是聊天,也可使是直播流传输等等。
踏浪
2019/11/28
2.7K0
使用socket实现即时通讯聊天室
Nodejs+socket.io搭建WebRTC信令服务器
我们在学习 WebRTC 时,首先要把实验环境搭建好,这样我们就可以在上面做各种实验了。
音视频_李超
2020/04/01
8.4K2
Nodejs+socket.io搭建WebRTC信令服务器
基于 socket.io 快速实现一个实时通讯应用
随着web技术的发展,使用场景和需求也越来越复杂,客户端不再满足于简单的请求得到状态的需求。实时通讯越来越多应用于各个领域。
用户2356368
2022/04/07
1.7K0
基于 socket.io 快速实现一个实时通讯应用
socket.io
本译文来源于https://socket.io/get-started/chat/,不足之处请多批评指正。 最近在学些vuejs和websocket相关技术,使用了websocket的两个封装的库vue-socket.io和vue-websocket
ccf19881030
2020/04/10
4.1K0
socket.io
《 Socket.IO》 解决 WebSocket 通信!
大家好呀,我是小菜~ 本文主要介绍 Socket.IO 微信公众号已开启,小菜良记,没关注的同学们记得关注哦! 在介绍 Socket.IO 之前, 我们先考虑一个问题, 如果这个时候有个需求, 类似
蔡不菜丶
2022/09/21
2.4K0
《 Socket.IO》 解决 WebSocket 通信!
基于node+socket.io+redis的多房间多进程聊天室
本文作者:IMWeb jaychen 原文出处:IMWeb社区 未经同意,禁止转载 一、相关技术介绍: 消息实时推送,指的是将消息实时地推送到浏览器,用户不需要刷新浏览器就可以实时获取最新的消息
IMWeb前端团队
2018/01/08
3.1K0
基于node+socket.io+redis的多房间多进程聊天室
低延迟双向实时事件通信 Socket.IO
Socket.IO 是一个库,可以在客户端和服务器之间实现低延迟,双向和基于事件的通信。
Tinywan
2024/08/27
3620
低延迟双向实时事件通信 Socket.IO
使用node、Socket.io 搭建简易聊天室
Socket.io是一个WebSocket库,会自动根据浏览器从WebSocket、AJAX长轮询、Iframe流等等各种方式中选择最佳的方式来实现网络实时应用,而且支持的浏览器最低达IE5.5。 Socket.io 服务器 和 Socket.io 客户端之间全双工通信信道 尽可能使用WebSocket 连接建立(”尽可能“就说明要求客户端和服务端都必须使用,HTTP 长轮询`作为后备。 在了解socket-io前,我们先了解三种通信方式和Http轮询。
can4hou6joeng4
2023/11/29
4630
nodejs多房间web聊天室[通俗易懂]
一年之前的做的小项目,过了许久,翻出当时的PPT文档总结一下。源码下载:https://github.com/CreekLou/chatRoom
全栈程序员站长
2022/06/25
1.6K0
nodejs多房间web聊天室[通俗易懂]
安装完 socket.io 以后,客户端 404 问题
你监听的是8080端口,所以是http://localhost:8080/socket.io/socket.io.js
全栈程序员站长
2022/07/11
1.9K0
HTML5之WebSocket
HTTP协议是一种无状态协议,服务端本身不具有识别客户端的能力,必须借助外部机制,比如session和cookie,才能与特定客户端保持对话。这多多少少带来一些不便,尤其在服务器端与客户端需要持续交换数据的场合(比如网络聊天),更是如此。为了解决这个问题,HTML5提出了浏览器的WebSocket API。
用户7353950
2022/05/10
1.1K0
Vue.js 如何使用 Socket.IO ?
在很多需求业务中,都需要浏览器和服务器实时通信来实现功能,比如:扫码登录(扫码后,手机确认登录,PC网页完成登录并跳转)、订单语言提醒等,这些都是建立在两端实时通信的基础上的。对前端而言,来实现浏览器和服务器实时通信,最好的选择就是Socket.IO库,能够快速的实现两端实时通信功能。
Javanx
2019/09/04
4.9K0
Vue.js 如何使用 Socket.IO ?
搭建简易的物联网服务端和客户端-redis+websocket(二十五)
1)介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 2)官网 https://redis.io/ 3)相关说明
治电小白菜
2020/08/25
2.5K0
搭建简易的物联网服务端和客户端-redis+websocket(二十五)
实现一个简单的WebSocket聊天室
run node index.js,并在浏览器打开 http://localhost:3000,访问成功即可看到
超超不会飞
2020/09/18
1.1K0
实现一个简单的WebSocket聊天室
Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室
  采用nodeJS设计,基于express框架,使用WebSocket编程之 socket.io机制。聊天室增加了 注册登录 模块 ,并将用户个人信息和聊天记录存入数据库.
书童小二
2018/09/03
2.7K0
Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室
推荐阅读
相关推荐
【实战记录】WebSocket在vue2中的使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档