Springfox 2.2.2 を Spring MVC プロジェクトに統合する作業を行っていますが、本来あるべきだと思われる API ドキュメントが生成されていません。私の構成に関するいくつかの情報の下に。
以下の依存関係を提供しました (fasterxml、webjars、Spring の正しいバージョンが使用されているなどの追加のライブラリと一緒に)。
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
Springfox は次のように構成されています。
package com.exemplarypackage.config;
@Configuration
@EnableSwagger2
@EnableWebMvc
@ComponentScan("com.exemplarypackage.controller")
public class SwaggerConfig extends WebMvcConfigurerAdapter{
@Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
ApiInfo apiInfo = new ApiInfo(
"My Project's REST API",
"This is a description of your API.",
"API TOS",
"url",
"me@wherever.com",
"API License",
"API License URL");
return apiInfo;
}
@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/");
}
}
コントローラーの例を以下に示します。
package com.exemplarypackage.controller;
@Api(value = "test class for springfox")
@Controller
public class TestController {
@ApiOperation(value = "Returns test details")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Successful retrieval", response = Test.class),
@ApiResponse(code = 404, message = "Test does not exist"),
@ApiResponse(code = 500, message = "Internal server error")}
)
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String test(Locale locale, Model model) {
logger.info("TEST");
return "test";
}
}
上記の設定で、url: localserver:8080/myApp/swagger-ui を実行すると、ほとんど何も表示されませんでしたが、エラー メッセージは表示されませんでした。
次に、spring-fox-swagger-ui-2.2.2.jar で見つけたコンテンツを src/main/resources/META-INF に追加しました (解凍して指定のフォルダーに貼り付けました)。ここで、localserver:8080/myApp/swagger-ui に移動すると、すべての緑色のグラフィックが表示されますが、API ドキュメントは表示されません。サーバーログで、swagger-ui が swagger-resources エンドポイントを探していることに気付きましたが、その後 404 になります。サーバーログを調べると、swagger-resources、v2/api-docs などのエンドポイントが作成されていないことがわかりました。ただし、クラスが swagger アノテーション用にフィルタリングされていることに気付きました... springfox があります。 swagger-resorces エンドポイントが含まれている META-INF/resources/webjars/springfox-swagger-ui フォルダー内の js ファイル - 別の名前に切り替える必要があるのではないでしょうか?
それを機能させる方法がわかりません...これらのエンドポイントを何らかの方法で宣言する必要がありますか、それとも自動的に作成する必要がありますか? 多分私は何か小さなものを見逃しているだけかもしれませんが、私はこの数日間問題と戦っていて、それを機能させるために他に何を設定する必要があるのか わかりません。