web-dev-qa-db-ja.com

SpringWebfluxでSwaggerを使用してWebサービスの説明を生成する

Spring webflux環境でSwaggerライブラリを使用してWebサービスを説明するソリューションはありますか?

目標は、Swaggerを使用してwsクライアントスタブを自動的に生成することです。

6
Jimmy Pannier

Spring Boot2.xおよびSpring5の機能は、2.8.0の時点ではまだspringfoxでサポートされていません。

次のSpringfoxの問題をサブスクライブすることをお勧めします: https://github.com/springfox/springfox/issues/177

3
napulitano

Springfoxプロジェクトからの公式 webfluxサポート を待っている間、GitHubでdeblocktによって行われる回避策があります: https://github.com/deblockt/springfox/tree/feature/webflux

Sourecodeをチェックアウトして、独自のjarを作成し、プロジェクトに含めてください。

2
dhqvinh

Springfox 3.0.0が利用できなくなるまで回避します

Pomファイル

       <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>3.0.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-spring-webflux</artifactId>
            <version>3.0.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>3.0.0-SNAPSHOT</version>
        </dependency>

 <repositories>
        <repository>
            <id>spring-libs-milestone</id>
            <name>Spring Milestone Maven Repository</name>
            <url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
        </repository>
    </repositories>

構成

@Configuration
@EnableSwagger2WebFlux
public class SwaggerConfig  implements WebFluxConfigurer {
    @Bean
    public Docket api() {

        return new Docket(DocumentationType.SWAGGER_2)
                .genericModelSubstitutes(Mono.class, Flux.class, Publisher.class)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/swagger**")
                .addResourceLocations("classpath:/META-INF/resources/");

        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}
2
Niraj Sonawane

リリース2.9.2以降、webfluxでswaggerを使用できます。

https://github.com/deblockt/springfox/tree/feature/webflux

1
Deepak Agrawal

Spring-boot-starter-webをspring-boot-starter-webfluxと一緒に使用できます。したがって、Spring WebfluxでSwaggerを本当に使用したい場合は、spring-boot-starter-web依存関係をプロジェクトに追加する必要があります。スプリングウェブで使用したのとまったく同じように、Swaggerを使用できます。違いはありません。

0
Shashank K

Spring boot 2サーブレットスタックをSwagger、プロジェクトでgithubで構成しました。何もないよりマシ。 :) https://github.com/armdev/springboot2-swagger

0