gpt4 book ai didi

spring-boot - 具有 swagger 生成接口(interface)的 ResponseEntity 返回类型通配符

转载 作者:行者123 更新时间:2023-12-05 06:13:58 25 4
gpt4 key购买 nike

我想知道返回ResponseEntity<?>的区别带通配符 VS ResponseEntity<ABC.class>当 Swagger 生成的 API 接口(interface)包含 2 个不同的类作为返回类型时作为返回类型,即一个用于异常,另一个用于正常流程。

我的 Controller 界面是:-

   @Operation(summary = "Get user by user name", tags = { "user" })
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "successful operation", content = @Content(schema = @Schema(implementation = User.class))),
@ApiResponse(responseCode = "400", description = "Invalid username supplied", content = @Content(schema = @Schema(implementation = Error.class)))
})
@GetMapping(value = "/user/{username}", produces = { "application/xml", "application/json" })
ResponseEntity<?> getUserByName(@PathVariable("username") String username);

@Schema 定义返回类型。

我可以使用 ResponseEntity<User> 吗?而不是 <?>对于 getUserByName方法?

我有全局异常处理程序 @ControllerAdvice在我的应用程序中返回 ResponseEntity<Error> .

最佳答案

您问题的答案很简单 Yes .由于您使用的是 Controller Adviser,因此您可以直接将端点返回类型定义为 User在 ResponseEntity 中

使用通配符(ResponseEntity<?>)作为返回类型,符号?定义了 Controller 方法的返回值可以是任意类型的ResponseEntity。

用作ResponseEntity<?>或者简单地保留为 ResponseEntity<>被视为其用法的原始类型。

但这样做确实不是一个好的做法。因此,您必须以这种格式声明 Controller 方法的确切返回类型 ResponseEntity<ABC> .

让我们以这个返回对象列表(List<Object>)的方法的示例 java 为例。

可以在此列表中添加 Car.class类型,一个 Van.class类型。但是方法的使用者无论如何都不应该处理这些破坏性的问题,我们必须定义一个确切的类型。

是的,您可以使用 ResponseEntity<User>如果您的方法返回用户类型 ResponseEntity。

我希望这能帮助您解决问题:)

关于spring-boot - 具有 swagger 生成接口(interface)的 ResponseEntity 返回类型通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63102189/

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