2设置post的body(如果是post的话需要)
3拿到返回的body(一般我们需要拿到接口的返回体进行解析)
假如这3个步骤的代码全部都能一键生成那该多爽,我终于站在巨人的肩膀上搞定了!
搞定的效果如下图:
image上面是对于csharp 采用自带的 HttpClient的代码生成演示,还可以针对java kotlin,python,nodejs等
本篇的主要功能都是在FiddlerScript里面完成,主要包含3块扩展
增加自定义右键菜单
增加控制开关
代码获取请求上下文并导出har
使用脚本完成process的封装并调用
1. 增加右键菜单点中某个Session然后点击右键菜单,选择生成指定语言的代码,这样使用起来最方便,如下图:
新增右键菜单的扩展方式是 【一个ContextAction+一个function】
例如:
public static ContextAction("C#-httpclient", "生成代码") function do1(arrSess: Session[]) { doStar(arrSess, "csharp","httpclient"); }代表新增一个 一级菜单叫 生成代码,二级菜单叫 "C#-httpclient"
下面的function就是点击需要响应的方法实现,默认是Session数组,因为可以选择多个。
2. 控制开关前面说有3个步骤,除了第一个步骤是核心的,其他2个步骤都是将json转为实体类定义,是辅助的。所以都设置开关可以人为控制要不要生成这2块的代码
如下图:
image新增开关的方式是定义【一个RulesOption+一个对应接收的变量】
public static RulesOption("关闭请求体转代码", "生成代码") var m_DisableReuqest: boolean = false;代表新增一个 以及菜单叫生成代码,二级菜单叫 "关闭请求体转代码",类型是bool,因为下面对应接收的变量是布尔类型!
3. 通过选中Session拿到整个请求的上下文上下文包括,请求的各种参数,比如url,header,method,request,response等
imageFillder有一个api可以导出har文件,这个har格式是谷歌提出来的一个用来描述一个请求的标准定义
关于har格式的详细文档:
那如何在Fiddler里面将Session导出har呢
imageimageimage那用代码如何导出呢?
//这种方式为导出到变量 注意是Fiddler 4.6.2.0版本之后支持的 var oExportOptions = FiddlerObject.createDictionary(); oExportOptions.Add(“ExportToString”, “true”); FiddlerApplication.DoExport("HTTPArchive v1.2", oSessions,oExportOptions, null); //这个就是了 var sOutput: String = oExportOptions[“OutputAsString”]; //这种方式为导出到指定路径 var oExportOptions = FiddlerObject.createDictionary(); oExportOptions.Add("Filename", "对应的路径"); FiddlerApplication.DoExport("HTTPArchive v1.2", oSessions,oExportOptions, null);这里我采用了第二种方式,先把选中的Session导出一个har文件,然后将这个har文件作为下一个process的入参,得到我想要结果!
下面隆重介绍根据har来生成请求代码的工具:httpsnippet
开源地址:https://github.com/Kong/httpsnippet
Kong的话有个很有有名的网关想必大家都听说过!
这里我已经把这个程序包装成在windows系统可以独立运行的exe了,可以在文章末尾获取下载链接。
这里我稍微改造了一下代码,把har文件的requestBody和responseBody也提取出来,为了是生成对应的POJO代码做入参.
将json生成实体类POJO这里用了另外一个工具:quicktype
开源地址:https://github.com/quicktype/quicktype
也包装成在windows系统可以独立运行的exe了。
好了,组装一起:
先通过代码生成har文件
然后用httpsnippet生成指定语言的代码,并导出har中的requestBody和responseBody