Spring Data RestおよびSwaggerを含むSpring Bootプロジェクトをセットアップします。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
これは私のSwagger構成です。
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
Application.propertiesからの抜粋:
spring.data.rest.base-path=/api
server.context-path=/myapp
サーバーを実行すると、残りのエンドポイントはすべて正しくマッピングされ、/myapp/api/...
(自分で作成したカスタムRestControllerを含む)。
しかしながら:
http://localhost:8080/myapp/api
Spring Data Rest API(Json形式)のリストは表示できますが、カスタムRestControllerエンドポイントは表示できません。
http://localhost:8080/myapp/swagger-ui.html
Spring Data Rest APIではなく、カスタムRestControllerとエラーエンドポイントのみをリストするNice GUIが表示されます。実際、 http:// localhost:8080/myapp/v2/api-docs は、Spring Data Restエンドポイントへの参照を行わず、カスタムRestControllerとエラーエンドポイントへの参照のみを行います。
Spring Data Rest&Swagger構成を修正するにはどうすればよいですか?
Spring Data Restサポート はspringfoxバージョン2.6.0でのみ導入されました。 springfoxの最新バージョン(この記事の執筆時点では2.6.1)にアップグレードした後、 指示 に従うと、エンドポイントのレンダリングに問題はないはずです。
Swaggerの最新バージョンにアップグレードする
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-data-rest</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
さらに、Spring Configuration/ApplicationクラスにSpringデータレストアノテーションをインポートします。
@Import(SpringDataRestConfiguration.class)
Springfox-data-restから構成をインポートしましたか? Dilip Krishnanが言ったように、指示に従って構成をインポートし、この注釈をメインアプリケーションクラスに追加しました。
@Import({springfox.documentation.spring.data.rest.configuration.SpringDataRestConfiguration.class})
それが役に立てば幸い!