swagger生成 html 文件
阿新 • • 發佈:2018-12-11
pom檔案配置如下
//新增依賴包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency> //使用外掛 <plugin> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-maven-plugin</artifactId> <version>1.5.5</version> <configuration> <sourceDirectory>target</sourceDirectory> <outputDirectory>target/asciidoc/${project.version}</outputDirectory> <headerFooter>true</headerFooter> <doctype>book</doctype> <sourceHighlighter>coderay</sourceHighlighter> <attributes> <toc>left</toc> <toclevels>3</toclevels> <sectnums>true</sectnums> <revnumber>${project.version}</revnumber> <revdate>${maven.build.timestamp}</revdate> <organization>leedasron</organization> <sourcedir>${project.build.sourceDirectory}</sourcedir> </attributes> </configuration> <executions> <execution> <id>output-html</id> <phase>generate-resources</phase> <goals> <goal>process-asciidoc</goal> </goals> <configuration> <backend>html5</backend> </configuration> </execution> <execution> <id>output-docbook</id> <phase>generate-resources</phase> <goals> <goal>process-asciidoc</goal> </goals> <configuration> <backend>docbook</backend> </configuration> </execution> </executions> </plugin>
swagger相關配置程式碼如下
import com.iot.cloud.util.ConstantUtil; import io.github.swagger2markup.GroupBy; import io.github.swagger2markup.Language; import io.github.swagger2markup.Swagger2MarkupConfig; import io.github.swagger2markup.Swagger2MarkupConverter; import io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder; import io.github.swagger2markup.markup.builder.MarkupLanguage; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.web.context.request.async.DeferredResult; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.net.URL; import java.nio.file.Path; import java.nio.file.Paths; import static com.google.common.base.Predicates.or; import static springfox.documentation.builders.PathSelectors.regex; @Profile("dev") public class SwaggerConfig extends com.iot.swagger.SwaggerConfig { private static final String GateWay_API = "default"; @Bean public Docket gatewayAPI() { return new Docket(DocumentationType.SWAGGER_2) .groupName(GateWay_API) .genericModelSubstitutes(DeferredResult.class) .useDefaultResponseMessages(false) .forCodeGeneration(true) .pathMapping("/") .select() .paths(or( regex(ConstantUtil.commonPath + "/.*") )) .build() // .globalOperationParameters(pars) .apiInfo(gatewayApiInfo()); } private ApiInfo gatewayApiInfo() { ApiInfo apiInfo = new ApiInfo( "雲控制中心API", "對外部應用提供功能與資料介面。", "0.1", "No terms of service", "
[email protected]", "The Apache License, Version 2.0", "http://www.apache.org/licenses/LICENSE-2.0.html" ); return apiInfo; } /** * 生成html文章專用 * <p> * private static final String Doctor_API = "doctor"; * private static final String Patient_API = "patient"; * private static final String Other_API = "other"; * private static final String GateWay_API = "gateway"; * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { String groupName = GateWay_API; //String groupName="other"; // String groupName="gateway"; URL remoteSwaggerFile = new URL("http://127.0.0.1:8060/v2/api-docs?group=" + groupName); Path outputFile = Paths.get("/target/" + groupName); Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder() .withMarkupLanguage(MarkupLanguage.ASCIIDOC) .withOutputLanguage(Language.ZH) .withPathsGroupedBy(GroupBy.TAGS) .withGeneratedExamples() .withoutInlineSchema() .withBasePathPrefix() .build(); Swagger2MarkupConverter converter = Swagger2MarkupConverter.from(remoteSwaggerFile) .withConfig(config) .build(); ; converter.toFile(outputFile); } }
1.首先啟動專案保證swagger可以訪問
此處要注意 路徑和api的分組
路徑 localhost:8080/v2/api-docs?group=defaut
分組是: default
2.根據main函式生成markdown檔案效果如下圖
3.根據pom檔案配置的外掛 根據markdown生成html
html效果如下