我对 springdoc-openapi 和 swagger 有疑问。在 api.yml 文件中,我定义了一些端点响应,例如:
responses:
200:
desription: example response
content:
......
404:
description: example response
在此之前,这种行为是我所期望的。在 swagger 中,我看到了 200 的示例值,但没有看到 404 的示例值,只有描述。当我开始使用 springdoc-openapi 时,当我没有提供例如 404 的内容时,200 中的内容将应用于 404。 有没有办法隐藏它?例如在 api.yml 或任何配置属性中?
我尝试搜索配置属性,但没有找到任何内容。此外,我尝试了内容:{},但它也不起作用。
可以使用以下语法之一来处理返回空内容作为响应:
content = @Content
content = @Content(schema = @Schema(hidden = true))
例如:
@GetMapping
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "example response"),
@ApiResponse(responseCode = "404", description = "example response", content = @Content)
})
public String index() {
return "Hello";
}
对于 RestController 的建议
@ResponseStatus(HttpStatus.NOT_FOUND)
@ExceptionHandler({ RuntimeException.class })
@ApiResponse(responseCode = "404", description = "example response", content = @Content)
@ResponseBody
public String handleError() {
return "NotFound";
}
请参阅:https://springdoc.org/#how-can-i-return-an-empty-content-as-response
要删除默认的“媒体类型”和“示例值”,您应该执行以下操作:
@Operation(
description = "Example",
summary = "Example",
method = "Example",
responses = [
ApiResponse(
responseCode = "204",
description = "No Content",
content = [Content(mediaType = "")]
)
]
)
当您再次打开 Swagger UI 时,默认响应应该消失。