通过hoverfly+中间件的方式mock服务http/https请求

hoverfly

hoverfly官方文档
hoverfly gitHub
Hoverfly 是一个轻量级、开源的 API 模拟工具。使用 Hoverfly,可以创建应用程序所依赖的 API 的真实模拟。
在这里插入图片描述

安装

linux安装

  • 运行
    hoverctl start
  • 捕获
    hoverctl mode capture
    curl --proxy http://localhost:8500 http://time.jsontest.com
  • 导出
    hoverctl export simulation.json
  • 模拟
    hoverctl mode simulate
    curl --proxy http://localhost:8500 http://time.jsontest.com
    docker: docker run -d -p 8888:8888 -p 8500:8500 spectolabs/hoverfly:latest
    由于docker部署时,镜像中没有hoverctl这个包
    修改模式可以通过8888端口进入web页面进行,但是功能非常有限
    其他功能需要通过hoverctl进行远程操作

远程模式

远程模式文档

创建远程连接
hoverctl targets create remote \
    --host hoverfly.example.com \
    --admin-port 8880 \
    --proxy-port 8555
设置默认远程
hoverctl targets default remote
修改配置文件
[root@WXTVOTR01-Sac hoverfly]# ./hoverctl config/root/.hoverfly/config.yaml
default: remote
targets:
  local:
    name: local
    host: localhost
    admin.port: 8888
    proxy.port: 8500
    authenabled: false
    username: ""
    password: ""
    loglevel: ""
  remote:
    name: remote
    host: 10.230.64.11
    admin.port: 8888
    proxy.port: 8500
    authenabled: false
    username: ""
    password: ""
    loglevel: ""

mock方案

从以上操作可见,hoverfly提供了一套简单的捕获、模拟方案,用于单个项目或者个人自测比较方便,但是如果用来做大批量的mock则不是很方便。在对于复杂操作hoverfly则提供了
中间件模式
中间件模式流程图
通过阅读hoverfly源码,我们可以得知hoverfly的中间件模式有2种,分别是脚本模式和远程模式
中间件的两种模式

脚本模式

其实是指定命令和脚本,比如以下命令在系统内部会组装成 python middleware.py

hoverctl middleware --binary python --script middleware.py

远程模式

其实扩展功能最强大的是远程模式,通过阅读源码可见hoverctl会以post请求的方式将request和response发给Remote
在这里插入图片描述
我们可以在Remote中实现各种mock功能,比如修改请求参数、修改响应内容、修改请求path、域名,修改请求和响应的header等

创建远程模式

hoverctl middleware --remote http:127.0.0.1:8081/api/mock

代理的使用

上面我们通过hoverctl实现了请求的mock等功能,那么怎么在系统中使用呢

go服务

对于go服务可以设置服务器/pod

export HTTP_PROXY="http://proxy-address:port"
export HTTPS_PROXY="https://proxy-address:port"

java服务

通过命令行

java -Dhttp.proxyHost=proxy-address -Dhttp.proxyPort=port -Dhttps.proxyHost=proxy-address -Dhttps.proxyPort=port -jar your-project.jar

通过代码,在主类中添加

System.setProperty("http.proxyHost", "proxy-address");
System.setProperty("http.proxyPort", "port");
System.setProperty("https.proxyHost", "proxy-address");
System.setProperty("https.proxyPort", "port");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值