a auto creation tool for http request, request param, response entity and status code of response body
- x-http-wrapper.jar package dependency: java8+
- development environment:
- java version: java8+
- java tool: intellij idea
- external libs: gson:2.8.0, fastjson:1.2.17, rxjava:1.2.2, junit:4.12
- 从xhwt文件夹下,获取其中的一个包装器的模板文件夹的所有文件,例如:xhwt/asynchttp/non_version文件夹的所有文件;
- 获取api_data.json文件,并修改x-http-wrapper.json中api_data.file_path_infos的配置信息,将api_data.json的绝对路径添加上去;
- 修改模板文件夹中,xhwt后缀模板文件中<t:header>标签内,生成文件的目标路径;
- 命令行:java -jar (jar path) (config absolute path)
java -jar x-http-wrapper.jar x-http-wrapper.json
- 在x-http-wrapper.json中,template_file_infos.need_generate属性:是否需要生成该类文件的开关;详细的配置文件介绍
- 解析x-http-wrapper.json这个配置文件;
- 在配置文件中,有API数据文件(在api_data中),再根据配置数据,将API数据解析为x-http-wrapper中的model datas;
- 在配置文件中,有所有的x-http-wrapper的template文件(在template_file_infos中),根据template文件中的内容与model datas和配置一起,生成目标文件;
- 使用方式:
java -jar x-http-wrapper.jar x-http-wrapper.json
- x-http-wrapper.json文件,必须是绝对路径,该文件是整个wrapper的配置文件;
- 若有多个json文件,也可以(如:有多个程序(ios,android)需要生成代码);
wrapper的配置文件:x-http-wrapper.json
- 该文件保存有所有的配置信息, 共有8个分类: api_data,template_file_infos,base_config,filter,request,response,status_code,param_types
- BaseModel:
- 所有的model都需要继承BaseModel
- BaseModel中有一个泛型用于存储更高一级的BaseModel
- 在template engine中,反射只认BaseModel,不是BaseModel的model不能反射
- template engine在反射调用时,若没有在反射的对象中找到方法,会从higherLevel中去找,直到没有higherLevel为止;
- model的结构:
- VersionModel-->StatusCode, Request
- StatusCode
- Request-->Url,Header,Input,Response
- Response-->Response File,Response Message
- 所有的类别都在XHWTFileType枚举中,现阶段共有6个类别; HttpApi, Request, RequestParam, Response, StatusCode, BaseResponse
- 且在该枚举中也有该模板类别所需数据的获取过滤功能(getReflectiveDatas);
- 生成的文件内容由该文件类型获取到的API数据与标签两者来驱动
- 头部标签<t:header>: 用于标示该模板文件,生成的目标文件路径和名称;
- file_dirs:目标文件路径
- file_name:目标文件名称
- 现阶段只有6个标签类型:使用反射来进行数据的加工
- text, foreach, retain, list_single_line, if_else, list_replace
- 标签内部的匹配都为反射的方法名称;
- 例如:在foreach标签中
匹配的request_groups即为反射后去request_groups方法的数据,然后利用该数据去遍历;<t:foreach each="request_groups"> </t:foreach>
api的数据源:apidocjs
- api_data.json就是使用apidocjs工具生成的数据文件;