在Java開發中,Swagger是開發中一個非常好的API自動生成文檔,提供了接口請求格式、測試等功能,但是有時候我們需要把文檔導出為文件,比如word等,不過在開發過程中我一般習慣導出為MarkDown文件,之前自己寫過一個小工具,但是效果不理想,這次在github找到一個還不錯的工具類。
引入jar包:
<dependency> <groupId>io.github.swagger2markup</groupId> <artifactId>swagger2markup</artifactId> <version>1.3.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.restdocs</groupId> <artifactId>spring-restdocs-mockmvc</artifactId> <version>2.0.3.RELEASE</version> <scope>test</scope> </dependency> 我是用的boot版本是2.X所以此包也使用2.X <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-staticdocs</artifactId> <version>2.6.1</version> <scope>test</scope> </dependency>
編寫生成類文件:
@AutoConfigureMockMvc @AutoConfigureRestDocs(outputDir = "src/swagger") @RunWith(SpringRunner.class) @SpringBootTest public class SwaggerToMarkdownTest { @Autowired private MockMvc mockMvc; @Test public void Test() throws Exception{ String out = "src/swagger"; mockMvc.perform(get("/v2/api-docs").accept(MediaType.APPLICATION_JSON)) .andDo(SwaggerResultHandler.outputDirectory(out).build()) .andExpect(status().isOk()) .andReturn(); //生成markdown的配置 Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder() .withMarkupLanguage(MarkupLanguage.MARKDOWN) .withOutputLanguage(Language.ZH) .withPathsGroupedBy(GroupBy.TAGS) .build(); //獲取swagger.json文件,輸出到outputDir中 Swagger2MarkupConverter converter = Swagger2MarkupConverter.from(Paths.get("src/swagger/swagger.json")).withConfig(config).build(); converter.toFile(Paths.get(out)); } }
配置上述文件的時候,需要已經做好Swagger的配置,有相關的接口內容即可。