如何解决为什么 ResponseEntity<T> 是通用的?
想象一下这个简单的控制器方法:
public ResponseEntity<?> findById(@Parameter(description = "id") @PathVariable String id) {
Optional<Model> model = repository.findById(id);
if(model.isEmpty()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body("Model not found");
}
return ResponseEntity.status(HttpStatus.OK)
.body(model.get());
}
如果找到则返回模型,否则返回错误字符串消息。情况可能比这更复杂。
所以我要返回一个 String
或一个 Model
类型,它们不能绑定到 ResponseEntity
的泛型类型。
我的问题是为什么 spring 团队将这个类设计为泛型类型?还是我用错了这个对象?
解决方法
当您定义 API 时,您会定义在操作正常的情况下您将返回的对象的类型,这是您应该在响应实体的通用类型中使用的对象。
如果你想返回不同的类型,你可以删除泛型并只返回一个 ResponseEntity 并添加任何你想要的对象
,除其他原因外,ResponseEntity<T>
还被 Spring 的 RestTemplate
HTTP 客户端返回。泛型类型允许客户端代码指定应该用于解释 HTTP 响应的类型,并获取适当的 Java 对象作为响应正文。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。