web-dev-qa-db-ja.com

SwaggerがSpring BootでSpring Data Rest APIを検出しない

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構成を修正するにはどうすればよいですか?

15
Manu

Spring Data Restサポート はspringfoxバージョン2.6.0でのみ導入されました。 springfoxの最新バージョン(この記事の執筆時点では2.6.1)にアップグレードした後、 指示 に従うと、エンドポイントのレンダリングに問題はないはずです。

5
Dilip Krishnan

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)
7
jzqa

Springfox-data-restから構成をインポートしましたか? Dilip Krishnanが言ったように、指示に従って構成をインポートし、この注釈をメインアプリケーションクラスに追加しました。

@Import({springfox.documentation.spring.data.rest.configuration.SpringDataRestConfiguration.class})

それが役に立てば幸い!

3
alonso_50