Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Api annotation's description is deprecated

In Swagger, the @Api annotation's description element is deprecated.

Deprecated. Not used in 1.5.X, kept for legacy support.

Is there a newer way of providing the description?

like image 558
Soumitri Pattnaik Avatar asked Jun 28 '16 11:06

Soumitri Pattnaik


People also ask

What is deprecated API?

With each release, specific Android APIs may become obsolete or need to be refactored to provide a better developer experience or support new platform capabilities. In these cases, Android will officially deprecate the obsolete APIs and direct developers to new APIs to use instead.

How do you mark API as deprecated?

To use it, you simply precede the class, method, or member declaration with "@Deprecated." Using the @Deprecated annotation to deprecate a class, method, or field ensures that all compilers will issue warnings when code uses that program element.

Is Springfox deprecated?

springfox (documentationProvider): Springfox is deprecated for removal in version 7.0. 0 of openapi-generator. The project seems to be no longer maintained (last commit is of Oct 14, 2020). It works with Spring Boot 2.5.


2 Answers

I found two solutions for Spring Boot application:

1. Swagger 2 based:

Firstly, use the tags method for specify the tags definitions in your Docket bean:

@Configuration @EnableSwagger2 public class Swagger2Config {          public static final String TAG_1 = "tag1";      @Bean     public Docket productApi() {         return new Docket(DocumentationType.SWAGGER_2).select()                 .apis(RequestHandlerSelectors.basePackage("my.package")).build()                 .tags(new Tag(TAG_1, "Tag 1 description."))                 // Other tags here...                 .apiInfo(apiInfo());     }      private ApiInfo apiInfo() {         return new ApiInfoBuilder().title("My API").version("1.0.0").build();     } } 

After, in RestController just add the @Api annotation with one (or more) of the your tags:

@Api(tags = { SwaggerConfig.TAG_1 }) @RestController @RequestMapping("tag1-domain") public class Tag1RestController { ... } 

2. Swagger 3 based (OpenAPI):

Similarly, use the addTagsItem method for specify the tags definitions in your OpenAPI bean:

@Configuration public class OpenApiConfig {      public static final String TAG_1 = "tag1";      @Bean     public OpenAPI customOpenAPI() {         final Info info = new Info()                 .title("My API")                 .description("My API description.")                 .version("1.0.0");          return new OpenAPI().components(new Components())                 .addTagsItem(createTag(TAG_1, "Tag 1 description."))                 // Other tags here...                 .info(info);     }      private Tag createTag(String name, String description) {         final Tag tag = new Tag();         tag.setName(name);         tag.setDescription(description);         return tag;     }  } 

Finally, in RestController just add the @Tag annotation:

@Tag(name = OpenApiConfig.TAG_1) @RestController @RequestMapping("tag1-domain") public class Tag1RestController { ... } 
like image 120
falvojr Avatar answered Sep 17 '22 08:09

falvojr


This is the correct way to add description to your Swagger API documentation for Swagger v1.5:

@Api(tags = {"Swagger Resource"}) @SwaggerDefinition(tags = {     @Tag(name = "Swagger Resource", description = "Write description here") }) public class ... { } 
like image 22
zappee Avatar answered Sep 21 '22 08:09

zappee