SpringBoot統合Swagger 2

10329 ワード

SwaggerUIの役割:1.すべてのインタフェースメソッドはAPIドキュメントを動的に生成することができ、手動でドキュメントを書く必要がない.研究開発は直接対応インタフェースをクリックして自己測定を完成することができる.テスト担当者はテストできます.
  • pom.xmlファイル追加依存
  • <dependency>
         <groupId>io.springfoxgroupId>
         <artifactId>springfox-swagger2artifactId>
         <version>2.7.0version>
    dependency>
    
    <dependency>
         <groupId>io.springfoxgroupId>
         <artifactId>springfox-swagger-uiartifactId>
         <version>2.7.0version>
    dependency>
  • swagger構成クラス
  • を作成する
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        @Bean
        public Docket api(){
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .pathMapping("/")
                    .useDefaultResponseMessage(false)
                    .select()
                    .paths(PathSelectors.regex("/.*"))
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder().title("Swagger  ")
                    .contact(new Contact("swagger","","[email protected]"))
                    .description("Swagger  ")
                    .version("1.0.0.0")
                    .build();
    
        }
    }
    SpringBootを使用してSwagger2を統合し、アクセスします.http://localhost/swagger-ui.html問題が発生した場合、ページにはデフォルトのエラーページが表示されます.バックグラウンドエラー:
    No mapping found for HTTP request with URI [/swagger-ui.html] in DispatcherServlet with name ‘dispatcherServlet’

    ソリューション


    このエラーは、静的リソースパスマッピングの問題によるものです.私たちは訪問しています.http://localhost/swagger-ui.htmlこの時、このswagger-ui.html関連のすべてのフロントエンド静的ファイルはspringfox-swagger-ui-2.7.0である.jarの中.SpringBootの自動構成自体は/swagger-uiではありません.htmlこのパスは対応するディレクトリMETA-INF/resources/の下にマッピングされます.このマッピングを追加すればいいです.WebMvcConfigクラスを構築します.コードは次のとおりです.
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    @Configuration
    public class WebMvcConfig extends WebMvcConfigurerAdapter {
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
            registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
    
            registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
        }
    }

    または、WebMvcConfigurerAdapterをSwaggerConfigクラスで直接継承します.コードは次のとおりです.
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig extends WebMvcConfigurerAdapter {
    
        @Bean
        public Docket api(){
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .pathMapping("/")
                    .useDefaultResponseMessage(false)
                    .select()
                    .paths(PathSelectors.regex("/.*"))
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder().title("Swagger  ")
                    .contact(new Contact("swagger","","[email protected]"))
                    .description("Swagger  ")
                    .version("1.0.0")
                    .build();
    
        }
    }

    特に説明しなければならないのは、SwaggerConfigというクラスは正しく配置されている必要があります.