首页 > 解决方案 > 为什么选择 ResponseEntity是通用的吗?

问题描述

想象一下这个简单的控制器方法:

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 团队将这个类设计为泛型类型?还是我使用了错误的这个对象?

标签: javaspringspring-bootspring-restcontrollerspring-rest

解决方案


当你定义你的 API 时,你定义了在操作正常的情况下你将返回的对象的类型,这是你应该在响应实体的通用类型中使用的对象。

如果你想返回不同的类型,你可以删除泛型并只返回一个 ResponseEntity 并添加你想要的任何对象


推荐阅读