Sum*_*mit 5 api-doc swagger spring-boot swagger-2.0 openapi
我正在从 swagger 2 迁移到 OpenApi 3。
Swagger 2 示例代码
@ApiOperation(value = "", nickname = "")
@GetMapping
public List<Employee> findEmployees(@Valid Dto dto) {
return employeeService.findEmployees(dto);
}
Run Code Online (Sandbox Code Playgroud)
OpenApi 3 代码
@Operation(summary = "")
@GetMapping
public List<Employee> findEmployees(@Valid Dto dto) {
return employeeService.findEmployees(dto);
}
Run Code Online (Sandbox Code Playgroud)
DTO类
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Dto {
private String status;
private String name;
private String destination;
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,swagger-ui 的生成存在显着差异。
Swagger 2 将 DTO 对象显示为扁平化为单个查询参数:
Swagger 2 ui 中发生单个查询参数时对象的图像扁平化
而 OpenApi 3 创建了一个 JSON 对象:
我想在 OpenApi 3 中拥有像以前在 Swagger 2 中那样的扁平化行为。有什么方法可以在 OPENAPI 3 中实现相同的效果。
经过一些研究,我发现新版本的 openapiui 依赖项已于 2020 年 4 月 12 日发布,它解决了我的问题。从版本1.3.2 开始可用。
<!-- https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-ui -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.3.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在查询参数对象之前使用 Annotation @ParameterObject解决它。
@Operation(summary = "")
@GetMapping
public List<Employee> findEmployees(**@ParameterObject** @Valid Dto dto) {
return employeeService.findEmployees(dto);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1126 次 |
| 最近记录: |