SwaggerUI 与 SpringDoc 不转换多值参数

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

我们最近将应用程序从 Spring Boot 2.x 迁移到 Spring Boot 3.x,并用 springdoc-openapi-starter-webmvc-ui 替换了 springdoc-openapi-ui 依赖项。

在此迁移之后,接受请求参数作为请求对象中的 List 或 List 的 GET API 的 Swagger UI 将无法调用,并被视为字符串对象。

使用像这样的 API,swagger 能够解释为多值参数

  @GetMapping(value = "/test")
  public String test(@RequestParam List<String> values) {
    return "test";
  }

enter image description here

但是,当我传递如下所示的对象时,它会将其视为字符串对象,并且从 swagger 调用的调用方式类似于编码字符串“{APIEndpoint}/test?values=%5B%22test%22%2C%22test1%” 22%5D”

  @GetMapping(value = "/test")
  public String test(TestDto testDto) {
    return "test";
  }

enter image description here

在迁移之前,这一切运行良好。到目前为止,我找到的解决方案是在类级别使用 @ParameterObject,添加后效果很好。

我们有 100 个 GET API,将其添加到每个类中并不是一个可能的解决方案。 OpenAPI 中是否有其他替代方案可以解决这个问题?

swagger-ui springdoc-openapi-ui spring-boot-3
1个回答
0
投票

我已经通过添加这些依赖项解决了类似的问题

implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0")
implementation 'io.swagger.core.v3:swagger-annotations:2.2.15'
© www.soinside.com 2019 - 2024. All rights reserved.