BAEL-5327 - Set a description and an example in Swagger (#11749)

* BAEL-5327 - Set a description and an example in Swagger

* BAEL-5327 - two space indentation for line continuation

Co-authored-by: Abhinav Pandey <Abhinav2.Pandey@airtel.com>
This commit is contained in:
Abhinav Pandey 2022-02-07 11:37:48 +05:30 committed by GitHub
parent 3f46e530e7
commit ed09368f21
4 changed files with 131 additions and 0 deletions

View File

@ -0,0 +1,13 @@
package com.baeldung.swaggerexample;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SwaggerExampleApplication {
public static void main(String[] args) {
SpringApplication.run(SwaggerExampleApplication.class, args);
}
}

View File

@ -0,0 +1,38 @@
package com.baeldung.swaggerexample.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import java.util.Collections;
@Configuration
@EnableWebMvc
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.baeldung.swaggerexample"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfo(
"Products API",
"API to let you add and view product",
"0.0.1",
"Terms of service",
new Contact("John Doe", "www.example.com", "myemail@company.com"),
"License of API", "API license URL", Collections.emptyList());
}
}

View File

@ -0,0 +1,34 @@
package com.baeldung.swaggerexample.controller;
import com.baeldung.swaggerexample.entity.Product;
import io.swagger.annotations.*;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@ApiOperation("Products API")
public class ProductController {
@ApiOperation(value = "Create a new product", notes = "Creates a new product as per the request body")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Successfully created"),
@ApiResponse(code = 400, message = "Bad request - The product is not valid"),
@ApiResponse(code = 500, message = "Internal server error - Something went wrong")
})
@PostMapping(value = "/products")
public ResponseEntity<Void> createProduct(@RequestBody Product product) {
return new ResponseEntity<>(HttpStatus.CREATED);
}
@ApiOperation(value = "Get a product by id", notes = "Returns a product as per the id")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Successfully retrieved"),
@ApiResponse(code = 404, message = "Not found - The product was not found")
})
@GetMapping("/products/{id}")
public ResponseEntity<Product> getProduct(@PathVariable("id") @ApiParam(name = "id", value = "Product id", example = "1") Long id) {
//retrieval logic
return ResponseEntity.ok(new Product(1, "Product 1", "$21.99"));
}
}

View File

@ -0,0 +1,46 @@
package com.baeldung.swaggerexample.entity;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
public class Product implements Serializable {
@ApiModelProperty(notes = "Product ID", example = "1", required = true)
private Long id;
@ApiModelProperty(notes = "Product name", example = "Product 1", required = false)
private String name;
@ApiModelProperty(notes = "Product price", example = "$100.00", required = true)
private String price;
// constructor and getter/setters
public Product(long id, String name, String price) {
this.id = id;
this.name = name;
this.price = price;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}