如何禁用 springdoc openapi 和 swagger 的默认响应

问题描述 投票:0回答:2

我对 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 或任何配置属性中?

我尝试搜索配置属性,但没有找到任何内容。此外,我尝试了内容:{},但它也不起作用。

swagger swagger-ui springdoc springdoc-openapi-ui
2个回答
0
投票

可以使用以下语法之一来处理返回空内容作为响应:

  • 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


0
投票

要删除默认的“媒体类型”和“示例值”,您应该执行以下操作:

@Operation(
    description = "Example",
    summary = "Example",
    method = "Example",
    responses = [
        ApiResponse(
            responseCode = "204",
            description = "No Content",
            content = [Content(mediaType = "")]
        )
    ]
)

当您再次打开 Swagger UI 时,默认响应应该消失。

© www.soinside.com 2019 - 2024. All rights reserved.