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;
}
}
次のマッピングを追加しました:
<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がロードされ、サーバー上で次のエラーが発生します
No mapping found for /context/swagger-resources/configuration/ui in Dispatcher servlet
誰かが助けることができますか?
私は自分の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
を押すと、ページがすぐに表示されます。
Springfox-swagger2とspringfox-swagger-uiのバージョンが異なることが問題になっています。場合によっては、前者の2.5.0と後者の2.6.1バージョンのように、統合は正常に機能します。ただし、前者が2.6.1で、後者が2.4.0の場合、UIは互換性がなくなります。したがって、両方の依存関係を実際に同じバージョンで取得すると、Swaggerの予期しない機能を減らすことができます。