1. 概述
在这个教程中,我们将学习如何修改Swagger API响应。首先,我们来解释一下OpenAPI规范和Swagger API响应。然后,我们将使用Spring Boot实现一个简单的示例,来使用OpenApi 3.0为Spring REST API提供文档。接着,我们将使用Swagger的注解设置响应体,返回一个对象列表。
2. 实现
在这个实现中,我们将设置一个带有Swagger UI的简单Spring Boot项目。这样,我们就有了包含应用程序所有端点的Swagger UI。然后,我们将修改响应体以返回一个列表。
2.1. 使用Swagger UI设置Spring Boot项目
首先,在ProductService
类中,我们创建一个产品列表。接着,在ProductController
中,定义REST API,让用户获取创建的产品列表。
首先,定义Product
类:
public class Product {
String code;
String name;
// standard getters and setters
}
然后,实现ProductService
类:
@Service
public class ProductService {
List<Product> productsList = new ArrayList<>();
public List<Product> getProductsList() {
return productsList;
}
}
最后,我们有Controller
类来定义REST API:
@RestController
public class ProductController {
final ProductService productService;
public ProductController(ProductService productService) {
this.productService = productService;
}
@GetMapping("/products")
public List<Product> getProductsList(){
return productService.getProductsList();
}
}
2.2. 修改Swagger API响应
Swagger提供了多种注解来文档化REST API。通过使用@ApiResponses
,我们可以定义一个ApiResponse
数组,来指定REST API的预期响应。
现在,我们使用@ApiResponses
为getProductList
方法设置响应内容为一个Product
对象的列表:
@ApiResponses(
value = {
@ApiResponse(
content = {
@Content(
mediaType = "application/json",
array = @ArraySchema(schema = @Schema(implementation = Product.class)))
})
})
@GetMapping("/products")
public List<Product> getProductsList() {
return productService.getProductsList();
}
在这个例子中,我们在响应体中设置了媒体类型为application/json
。此外,我们使用content
关键字修改了响应体。同时,通过array
关键字,我们将响应设置为一个Product
对象的数组:
3. 总结
在这篇教程中,我们简要了解了OpenAPI规范和Swagger API响应。Swagger提供了各种注解,如@ApiResponses
,包括不同的关键词,使我们能够轻松地根据应用需求修改请求和响应。在我们的示例中,我们使用了@ApiResponses
来修改Swagger响应体的内容。
如往常一样,代码可在GitHub上找到。