web-dev-qa-db-ja.com

swagger-resources / configuration / uiのマッピングが見つかりません

SpringBoot以外のアプリでSwaggerUIを構成しようとしています。私は次のことをしました。 1.以下の依存関係を追加しました

<dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.1.2</version>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.5.0</version>
    </dependency>

    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>bootstrap</artifactId>
        <version>3.3.5</version>
    </dependency>

2. SwaggerConfigクラスを追加しました

@Configuration
@EnableSwagger2
@EnableWebMvc
//@PropertySource("classpath:/swagger.properties")
public class SwaggerConfig {

@Bean
public Docket proposalApis(){
    return new Docket(DocumentationType.SWAGGER_2)
        .groupName("test")
        .select()
            .apis(RequestHandlerSelectors.basePackage("com.test.abc"))
        .paths(PathSelectors.regex("/test1.*"))
        .build()
        .apiInfo(testApiInfo());
}

private ApiInfo testApiInfo() {
    ApiInfo apiInfo = new ApiInfoBuilder().title("Test APIs").description("GET POST PUT methods are supported ").version("V1").build();
    return apiInfo;
}
}
  1. 次のマッピングを追加しました:

    <mvc:resources mapping="swagger-ui.html" location="classpath:/META-    INF/resources/"/>
    <mvc:resources mapping="/webjars/**" location="classpath:/META-    INF/resources/webjars/"/>
    

次のURLにアクセスできます

    /v2/api-docs
    /swagger-resources

しかし、swagger-ui.htmlのロード中に、UIがロードされ、サーバー上で次のエラーが発生します enter image description here

    No mapping found for /context/swagger-resources/configuration/ui in Dispatcher servlet

誰かが助けることができますか?

6
Ganesh

私は自分のpomでSwaggerバージョン2.3.1を使用しています。 springfox-swagger2アーティファクトとspringfox-swagger-uiアーティファクトのバージョンが異なるのはなぜですか。

私のSwaggerConfigクラスは次のようになります。プロパティなし:

@EnableSwagger2
@Configuration
public class SwaggerConfig {
    @Autowired
    private TypeResolver typeResolver;

    @Bean
    public Docket swaggerSpringMvcPlugin() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("FooBar")
                .select()
                //Ignores controllers annotated with @CustomIgnore
                .apis(any()) //Selection by RequestHandler
                        .paths(paths()) // and by paths
                        .build()
                        .apiInfo(apiInfo()
                        );
    }

    private ApiInfo apiInfo() {
        return new ApiInfo("FooBar",
                "A Java server based on SpringBoot",
                "1.0.0",
                null,
                "author","","");
    }

    //Here is an example where we select any api that matches one of these paths
    private Predicate<String> paths() {
        return or(
                regex("/foobar/*.*")
                );
    }
}

構成やリソースはありません。

URL http://localhost:8080/foobar/swagger-ui.htmlを押すと、ページがすぐに表示されます。

2
duffymo

Springfox-swagger2とspringfox-swagger-uiのバージョンが異なることが問題になっています。場合によっては、前者の2.5.0と後者の2.6.1バージョンのように、統合は正常に機能します。ただし、前者が2.6.1で、後者が2.4.0の場合、UIは互換性がなくなります。したがって、両方の依存関係を実際に同じバージョンで取得すると、Swaggerの予期しない機能を減らすことができます。

0
Stuti Verma