【发布时间】:2021-12-23 20:44:36
【问题描述】:
我在我的 SpringBoot 项目中使用 OpenApi 3 来生成一个 Swagger html 页面。
POM.xml 中的依赖:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.5.12</version> </dependency>
在 Controller 类中,我在方法上方定义了以下注解。
@Operation(
summary = "Get a list of letters for a specific user",
description = "Get a list of letters for a specific user",
tags = {"letters"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "success", content = {@Content(
mediaType = "application/json",
array = @ArraySchema(schema = @Schema(implementation = LetterDTO.class)))}),
@ApiResponse(responseCode = "400", description = "BAD REQUEST"),
@ApiResponse(responseCode = "401", description = "UNAUTHORIZED"),
@ApiResponse(responseCode = "403", description = "Forbidden"),
@ApiResponse(responseCode = "404", description = "NOT_FOUND: Entity could not be found")}
)
@GetMapping(value = "letters/user/{userId}", produces = {"application/json"})
public List<LetterDTO> getLettersForUser(
...
)
Swagger UI 的输出显示代码 200 的正确响应,它是 LetterDTO 对象的列表。
但代码 401 的响应还显示了一个 LetterDTO 对象列表。很难,我没有为代码 401 定义任何响应对象。我希望 Swagger 生成与代码 400 相同的响应对象,这是包含错误代码和错误消息的默认返回对象。
为什么 Swagger 采用与为代码 200 定义的返回对象相同的返回对象? 我期待 Swagger 会生成默认的返回对象。这是 Swagger 中的错误吗?
【问题讨论】:
-
你解决过这个问题吗?
标签: java spring swagger-ui openapi