# swagger2word-stronger **Repository Path**: dumpcao/swagger2word-stronger ## Basic Information - **Project Name**: swagger2word-stronger - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2020-04-01 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #简介 本项目是基于开源项目修改而来,原项目的介绍请参考README-old.md文件; 其开源地址为: https://github.com/JMCuixy/swagger2word https://www.cnblogs.com/jmcui/p/8298823.html 该项目给了我不少帮助,主要是基本的架子是搭建好了的,然后利用thymeleaf生成html, 再下载转为word。 其也存在一些问题,总体来说,先看看我们改后的效果。 ![Image text](display.png) 在我们的项目中,swagger接口可能是如下形式: ```java @PostMapping("/getLimitPhoneList.do") @ApiOperation(value = "根据电话号码查询匹配该号码的黑名单列表", notes = "100%") public Message> list(@RequestBody @ApiParam GetLimitPhoneListReqVO reqVO) { IPage limitPhones = iLimitPhoneApproveService.pageByPhoneNumber(reqVO); return successResponse(limitPhones); } ``` 可以看到,上面的接口,其返回类型为Message>,涉及多重泛型,且最内层的 对象,其部分属性可能也是对象,这就是一个递归的过程。 请求类型同理。 另外,针对我们项目里,部分接口的返回结果是树结构,比如部门树: ```java @Data @ApiModel( description="行政区划树结构(来源GIS)") public class DistrictCodeTreeRespVo { ... @ApiModelProperty(value = "子行政区划列表") private List children; } ``` 因此我这边在处理的时候,还处理了这种情况。 这些都是原项目不支持的,另外,原项目在解析过程中,主要使用json、map等各种结构去解析json 我这里几乎重写了其解析部分,定义了n个对象来进行json反序列化;也方便我们进行前面说的问题的 修改,同时,方便后续的维护,不然就真的写完就看不懂了。 #使用说明 大家打开swagger页面后,一般会发现如下地址: http://10.15.9.114:9997/v2/api-docs 如下图所示: ![Image text](swagger-url.png) 保存这个地址待用。 然后启动被项目,然后按照如下方式调用: http://127.0.0.1:8080/toWord?url=http://10.15.9.114:9997/v2/api-docs 调用上面的接口后,会打开生成的文档的页面: ![Image text](download-doc.png) 此时,点下载即可。 然后将下载的doc,打开时,需要选择:html文档。 然后将里面的内容替换到完整的接口文档中,即可。 #遗留问题 目前,几乎只支持post+json、get+json,即content-type为application/json; 其他multipart-form、上传、下载之类的,暂未支持 我们自己的项目中,使用的swagger依赖为2.9.2版本,其他版本是否支持,需要自行尝试。 ```xml io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui 2.9.2 ```