我们最近将应用程序从 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";
}
但是,当我传递如下所示的对象时,它会将其视为字符串对象,并且从 swagger 调用的调用方式类似于编码字符串“{APIEndpoint}/test?values=%5B%22test%22%2C%22test1%” 22%5D”
@GetMapping(value = "/test")
public String test(TestDto testDto) {
return "test";
}
在迁移之前,这一切运行良好。到目前为止,我找到的解决方案是在类级别使用 @ParameterObject,添加后效果很好。
我们有 100 个 GET API,将其添加到每个类中并不是一个可能的解决方案。 OpenAPI 中是否有其他替代方案可以解决这个问题?
我已经通过添加这些依赖项解决了类似的问题
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0")
implementation 'io.swagger.core.v3:swagger-annotations:2.2.15'