1. 说一下背景

在日常开发或者测试工作中,经常会因为下游服务不可用或者不稳定时,通过工具或者技术手段去模拟一个HTTP Server,或者模拟所需要的接口数据。

这个时候,很多人脑海里,都会想到可以利用Mock技术来解决,

当说起Mock,对于发、测试来说,是老生常谈的话题了,之前公众号也分享过很多关于此类的技术文章。市面上Mock工具有很多,比如CharlesFiddler,但这些虽然都能实现Mock,但是在操作上相对来说还是比较麻烦,抓了包才能修改返回结果。并且对于一些复杂的开发测试场景,也很难得到满足。

今天就给大家推荐一款测试开发神器:Mockoon, 它采用的是非侵入式,能够实时修改返回结果。

2. Mockoon介绍

Mockoon 被官方称为:一款在地运行模拟API最简单,最快的解决方案。无需远程部署,无需帐户,并且是开源的。

它是利用Electron构建的,可以在Windows(exe),Linux(deb,rpm,Appimage和Snap)和MacOS(dmg或brew)上使用。官网地址:mockoon.com

下载地址:

https://mockoon.com/#download

功能特点:

从官网中可以看出,Mockoon 是一个可以通过图形化界面帮我们快速搭建 API 服务的工具,并且支持数据模拟、路由解析、跨域访问、HTTPS、自定义延时、Docker 等等各种你想要的功能,同时支持支持 Windows、Mac、Linux,页面整体结构是这样子的:

3. Mockoon基础使用

Mockoon布局,和 PostMan 有异曲同工之妙啊。

比如,在左侧可以配置一个个请求列表,点进去可以在右侧配置详情,比如配置是 GET 还是 POST 请求,path 是什么,Response Body 是什么,Response Headers 是什么,另外还有一些规则和基础设置。

另外在最上面我可以配置运行的 hostport,然后左上角还有一个运行按钮,一点就相当于启动了 Server 了,启动之后按钮就会变成红色,再按一下就会停止,比如这里我就配置了运行在本地 3000 端口:

然后可以根据自定义需求,修改响应Body

{
"Templating example": "For more information about templating, click the blue 'i' above this editor",
"users": [
{{# repeat (queryParam 'total' '10') }}
{
"userId": "{{ faker 'random.number' min=10000 max=100000 }}",
"firstname": "{{ faker 'name.firstName' }}",
"lastname": "{{ faker 'name.lastName' }}",
"friends": [
{{# repeat (faker 'random.number' 5) }}
{
"id": "{{ faker 'random.uuid' }}"
}
{{/ repeat }}
]
},
{{/ repeat }}
],
"total": "{{queryParam 'total' '10'}}"
}

然后接下来配置跨域访问,就加一个 Response Header(根据需要,可选):

Access-Control-Allow-Origin: '*'

然后点击左上角的运行按钮就成了。

Mockoon 还提供了快捷访问的功能,接着点右上角的打开按钮:



浏览器就打开了,然后数据就看到了:

这样,我们通过非常简单的可视化配置就完成了 API Server 的搭建,熟练的话一分钟就完成了。

4. Mockoon进阶使用

有时,您可能只需要模拟API的一部分,然后将其余部分转发到现有的REST服务器。幸运的是,您可以使用Mockoon做到这一点

通过单击右上角的齿轮来打开环境设置:



启用代理模式,然后输入要将转发到的服务器URL。在环境名称的右侧应出现一个小的盾牌图标,指示已启用代理模式:



Mockoon将拦截所有已定义的路由,并将任何其他请求转发到代理模式设置中定义的服务器。

浏览器打开: http://0.0.0.0:3000/api/aitest 地址即可拿到结果,body中随时修改内容都会立即生效,不需要再次启动任何东西

打开浏览器访问:

这样一个基本的Mock就实现了,下面我们来说下使用LightProxy工具做代理转发

5. LightProxy工具

5.1 简介

LightProxy 是 阿里巴巴IFE 团队开发的一款基于 Electronwhistle 的开源桌面代理软件,可以自动完成证书安装和代理设置,通过 HTTP 代理使用规则转发、修改每一个请求和响应的内容。

项目地址:

https://github.com/alibaba/lightproxy

5.2 它能帮你做什么:

  • 抓包,包括无线场景抓包
  • 实时 hosts 绑定
  • 按规则转发资源
  • mock 接口,页面等
  • 修改请求和响应内容,例如在页面中插入 script ,修改返回头等

一句话总结LightProxy是一款全能代理抓包工具,通过基于 whistle 的代理能力,能够任意修改开发环境中的 request 和 response ,够让你随心所欲的掌控自己当前的开发或者测试环境。

本地开发:

git clone https://github.com/alibaba/lightproxy
cd lightproxy
yarn run install-deps
yarn run dev

下载安装:

Windows下载: https://gw.alipayobjects.com/os/LightProxy/LightProxy-Setup.exe
Mac下载: https://gw.alipayobjects.com/os/LightProxy/LightProxy.dmg

5.3 配置

以PC端转发为例:

1、打开LightProxy工具,编辑时,会自动提生成安装证书命令,直接复制在命令行中执行即可。

2、新建代理转发规则配置,这就相当于将该域名所有请求转到我本地配置的mock工具上

上述两条规则解释:

  • 1、访问https://www.cnblogs.com/jinjiangongzuoshi/请求时,自动转发到http://localhost:3000/users接口上。
  • 2、将www.cnblogs.com域名所有请求转发到localhost:3000

同理,此时如果访问https://www.cnblogs.com/users,也同样会转发到localhost:3000上。

这样无论是在手机端或pc端 访问指定域名下所有请求都会转向到对应mock工具中,然后再根据路径和请求类型获取配置的返回结果。

更多例子

1、例如当我们需要在线上页面中加入一个 DIV ,如果没有代理我们需要依赖后端一套类似的预发环境,而有了 LightProxy 我们只需要使用:

https://www.alibaba.com/ htmlPrepend://(<div>test</div>)

就可以在一个线上的页面中插入一个 div 。

2、同样的,我们可以直接把页面中的一个 JS 转发到本地一个开发中的文件

https://www.google.com/xx.js file:///User/xxx/xxx.js

3、当后端缺少 CORS 头时,我们可以直接给它先加上 CORS 头

https://xxx.com/xx.json resCors:// # 给响应的请求增加 CORS header

总体来说LightProxy 能够让开发人员或者测试人员完全掌控自己的开发测试环境,用极低的成本定制自己的开发环境,而不是总是在等待依赖方按照自己的需求提供相应的环境。

甚至于,你可以自己用 NodeJS 书写针对某个规则的响应

更详细使用可参考:

https://github.com/alibaba/lightproxy/issues/19

6. 小结

除此之外,Mockoon 还支持命令行,比如通过 mockoon-cli 就可以快速创建一个 API Server,如图所示:

命令行的使用和安装可以参考:

https://github.com/mockoon/cli#installation

另外无论是Mockoon还是LightProxy,还有太多功能,比如 HTTPS、多请求处理、日志、路由、模板配置这里就不再一一叙述了,用到的时候大家查要文档就好啦

https://mockoon.com/docs/latest/gui-cheat-sheet/
https://mockoon.com/docs/latest/multiple-responses/
https://mockoon.com/docs/latest/requests-logging/
https://mockoon.com/docs/latest/cors/
https://mockoon.com/tutorials/

以上便是今天的分享,更多功能期待你的探索!

最新文章

  1. CANopen学习——同步
  2. this, 你到底指向谁?
  3. 数据库开发基础-SQl Server 链接查询
  4. win10与ubantu双系统产生的引导错误问题-----unknown filesystem
  5. iOS开发——UI篇Swift篇&amp;UIProgressView
  6. BOM 之 window
  7. Linux下python升级
  8. 关系型数据库事务处理ACID
  9. 远程控制TOMCAT启动
  10. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA
  11. 掌握numpy(四)
  12. 【shell基础】if分支语句
  13. Centos系统通过tar.gz包安装Mysql5.7
  14. Mybatis(七)-- LRU LFU 算法
  15. 艰苦的编译boost python (失败)
  16. Codeforces 791B. Bear and Friendship Condition 联通快 完全图
  17. jackson中自定义处理序列化和反序列化
  18. Xtrabackup—InnoDB实现mysql热备份
  19. SQL复杂语句查询练习
  20. 如何创建自己的ruby gem包

热门文章

  1. js 十大排序算法 All In One
  2. how to design a search component in react
  3. component &amp; slot
  4. 「NGK每日快讯」11.18日NGK公链第15期官方快讯
  5. 「NGK每日快讯」11.25日NGK公链第23期官方快讯!
  6. 「NGK每日快讯」12.17日NGK第44期官方快讯!
  7. TCP编程详解
  8. Windows Server2012 r2 nginx反向代理图片服务器
  9. AdoptOpenJDK是什么?
  10. vue版本一直是2.9.6版本,卸载也卸载不掉,更新也更新不了