hoverfly
hoverfly官方文档
hoverfly gitHub
Hoverfly 是一个轻量级、开源的 API 模拟工具。使用 Hoverfly,可以创建应用程序所依赖的 API 的真实模拟。
安装
- 运行
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");