web-dev-qa-db-ja.com

Springfox Swagger2からSpringDoc OpenAPIへの移行

https://www.dariawan.com/tutorials/spring/documenting-spring-boot-rest-api-springdoc-openapi-3/

これらをフォローしようとしています

次のような注釈をどのように処理しますか

@ApiModel(value = "Response container")

@ApiModelProperty(value = "Iventory response", required = true)
6
Kalpesh Soni

Swagger2アノテーションをSwagger3に更新できます(springdocでサポート)。

役立つ正規表現の記事: https://www.david-merrick.com/2017/11/15/useful-regexes-for-transitioning-swagger-2-0-to-3-0-annotations/

@ApiModel@ApiModelPropertyの両方を@Schemaio.swagger.v3.oas.annotations.media.Schema)に置き換える必要があります

2

SpringFoxからの移行

  • Springfoxとswagger 2の依存関係を削除します。代わりに_springdoc-openapi-ui_依存関係を追加します。
_   <dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-ui</artifactId>
      <version>@springdoc.version@</version>
   </dependency>
_
  • Swagger 2アノテーションをswagger 3アノテーションに置き換えます(これは_springdoc-openapi-ui_依存関係に既に含まれています)。 swagger 3アノテーションのパッケージは_io.swagger.v3.oas.annotations_です。

    • _@ApiParam_-> _@Parameter_
    • _@ApiOperation_-> _@Operation_
    • _@Api_-> _@Tag_
    • _@ApiImplicitParams_-> _@Parameters_
    • _@ApiImplicitParam_-> _@Parameter_
    • _@ApiIgnore_-> @Parameter(hidden = true)または@Operation(hidden = true)または_@Hidden_
    • _@ApiModel_-> _@Schema_
    • _@ApiModelProperty_-> _@Schema_
  • このステップはオプションです:multipleDocket Beanがある場合のみ、それらをGroupedOpenApi Beanに置き換えます。

    前:

_    @Bean
    public Docket publicApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("org.github.springshop.web.public"))
                .paths(PathSelectors.regex("/public.*"))
                .build()
                .groupName("springshop-public")
                .apiInfo(apiInfo());
    }

    @Bean
    public Docket adminApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("org.github.springshop.web.admin"))
                .paths(PathSelectors.regex("/admin.*"))
                .build()
                .groupName("springshop-admin")
                .apiInfo(apiInfo());
    }
_

今:

_    @Bean
    public GroupedOpenApi publicApi() {
        return GroupedOpenApi.builder()
                .setGroup("springshop-public")
                .pathsToMatch("/public/**")
                .build();
    }

    @Bean
    public GroupedOpenApi adminApi() {
        return GroupedOpenApi.builder()
                .setGroup("springshop-admin")
                .pathsToMatch("/admin/**")
                .build();
    }
_

1つしかない場合Docket-それを削除し、代わりにプロパティを_application.properties_に追加します。

_springdoc.packagesToScan=package1, package2
springdoc.pathsToMatch=/v1, /api/balance/**
_
  • OpenAPIタイプのBeanを追加します。例を参照してください:
_    @Bean
    public OpenAPI springShopOpenAPI() {
        return new OpenAPI()
                .info(new Info().title("SpringShop API")
                .description("Spring shop sample application")
                .version("v0.0.1")
                .license(new License().name("Apache 2.0").url("http://springdoc.org")))
                .externalDocs(new ExternalDocumentation()
                .description("SpringShop Wiki Documentation")
                .url("https://springshop.wiki.github.org/docs"));
    }
_
2
brianbro