Http请求模拟报文返回工具HttpSimulation分享

来源:互联网 发布:马原人工智能与意识 编辑:程序博客网 时间:2024/06/05 16:24

身为一名程序员,HTTP我想是没有人不知道的吧,另外在大家开发过程中应该遇到过这样的问题,就是需要模拟一个HTTP报文返回,好对自己的程序进行功能测试,今天在这篇文章中跟大家分享一个自己实现的小工具--HttpSimulation,用于对模拟各种HTTP报文返回场景,有需要的可以下载使用,如果有志同道合的可以一起不断完善这个小工具。


需求描述:

开发一个简单工具,用于帮助开发、测试及相关人员进行HTTP请求的相关场景模拟需求。

 

开发功能描述:

(1)根据指定的请求参数返回相应的模拟报文,用于模拟部分场景;

(2)返回报文支持加密和不加密;

(3)返回报文支持压缩和不压缩;

(4)返回报文支持HTTP头字段设置;

(5)对单个接口支持返回多个报文,返回报文按照一定设定的占比随机返回(用于模拟有时成功,有时失败的场景);


自己实现的代码是一个maven项目,HttpSimulation项目代码已经开源到Github,项目地址如下所示:

https://github.com/andamajing/HttpSimulation


可以在Eclipse中直接导入该项目,经过构建后生成一个war包,直接部署在tomcat下启动即可,对于返回的报文需要在配置文件config.xml中进行配置,在下面给出了一个示例配置文件:

<?xml version="1.0" encoding="UTF-8"?><config><component id="test"><interface id="test"><encrypt>false</encrypt><encryptmode>des</encryptmode><encryptkey>123456</encryptkey><compress>false</compress><compressmode>gzip</compressmode><response rate="50,50" cachable="true"><headers><header><name>Content-Type</name><value>application/json</value></header></headers><responsetags><responsetag>*/simulation1.txt</responsetag><responsetag>*/simulation2.txt</responsetag></responsetags></response></interface></component></config>

上面配置说明:用于配置test组件的test接口调用时随机返回simulation1.txt和simulation2.txt文件中配置的报文,返回报文随机,占比约50%:50%。

 

 

参数字段说明:

字段名称

上级字段

字段含义描述

数量要求

节点属性

备注

config

配置上下文

1

顶级节点

 

component

config

单个组件配置

+

子节点

含有属性id

interface

component

单个接口配置

+

子节点

含有属性id,用于唯一标识一个接口,相同组件下的接口id要确保唯一;

encrypt

interface

是否加密

1

子节点

 

encryptmode

interface

加密算法

0/1

子节点

目前仅支持DES加密;在启用加密情况下需要设置该值;

encryptkey

interface

加密秘钥

0/1

子节点

在启用加密情况下需要设置该值;

compress

interface

是否压缩

1

子节点

 

compressmode

interface

压缩算法

0/1

子节点

目前仅支持GZIP压缩;

response

interface

返回报文配置

1

子节点

用于配置模拟返回包

rate

response

返回包的返回占比

0/1

属性节点

默认100,如果有多个返回包

cachable

response

返回的报文是否缓存在内存

0/1

属性节点

默认true,如果报文文件在服务使用过程中有修改需求,需设置成false,表示读取最新的文件内容。

headers

response

返回头设置

*

子节点

 

header

headers

单个返回头

*

子节点

 

name

header

返回头名称

1

子节点

 

value

header

返回头名对应的值

1

子节点

 

responsetags

response

返回包文件位置配置

1

子节点

 

responsetag

responsetags

单个返回包配置

+

子节点

必须配置绝对地址,否则无法正确访问文件;


使用说明:

 

请求地址:****/simulation/test?componentid=*&interfaceid=*

 

示例:

http://localhost:8081/simulation/test?componentid=test&interfaceid=test

 

返回包:

{

"resultcode":"200",

"reason":"Return Successd!",

"result":{

    "province":"浙江",

    "city":"杭州",

    "areacode":"0571",

    "zip":"310000",

    "company":"中国移动",

    "card":"移动动感地带卡"

}

}

 

(备注:上面simulation1.txt和simulation2.txt文件中保存的都是如上json字符串。)


如果您觉得该工具对您有帮助并且愿意打赏我,欢迎扫描下面二维码通过微信或者支付宝进行土豪打赏,感谢您的支持,谢谢!



0 0
原创粉丝点击