1. 程式人生 > >swagger生成 html 文件

swagger生成 html 文件

 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效果如下