gpt4 book ai didi

spring-boot - 如何在 Spring Boot 中使用 OpenAPI 3 Swagger 编写 @ApiResponse,它可能会返回一个类或该类的列表

转载 作者:行者123 更新时间:2023-12-05 02:32:35 26 4
gpt4 key购买 nike

如文档中所写,如果我们想要定义多个响应,我们可以将 anyOf 与 @Schema 一起使用。

    @ApiResponse(responseCode = "201", description = "OK",
content = @Content(schema = @Schema(anyOf = {Product.class, Activity.class})))

我的 Controller 返回 ProductList<Product> .我想在我的 OpenAPI 3 文档中指定这一点。我想知道这是否可能。如果是,那么如何?如果否,那么有任何解决方法吗?

我不仅要指定 List.class .我想指定 List<Product> .

P.S.:- 在 Google 上搜索没有得到任何我可以使用的结果。

最佳答案

好吧,这是一个艰难的过程。

基本上如果你真的想返回一个对象列表或一个对象,那么你可以创建一个像这样的基本接口(interface)

public interface Response {
}

然后您可以创建实现响应的对象

public class Hello implements Response {
private String message;

public Hello(String message) {
this.message = message;
}

public String getMessage() {
return this.message;
}
}

最后我们可以创建对象的列表。为此,我们需要创建一个类,它扩展 ArrayList 并实现我们的接口(interface)

public class HelloList extends ArrayList<Hello> implements Response {
}

之后我们可以将我们的模式设置为实现

@ApiResponse(responseCode = "200", description = "hello world", content = @Content(mediaType = "application/json", schema = @Schema(implementation = Response.class)))

在客户端,您需要检查 Response-Object 的实例,以便您可以解析对象或列表

Response response = someCall();
if (response instanceof Hello) {
System.out.println(processHello((Hello) response);
}
if (response instanceof HelloList) {
System.out.println(processHelloList((HelloList) response);
}

此示例有效,但它非常非常复杂且令人困惑。设计 api 的更好方法是只返回列表。我看不到将一个对象或它的列表分开的好处。

关于spring-boot - 如何在 Spring Boot 中使用 OpenAPI 3 Swagger 编写 @ApiResponse,它可能会返回一个类或该类的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71211742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com