实体模型或 Pojo 类作为 REST API 的返回对象
Posted
技术标签:
【中文标题】实体模型或 Pojo 类作为 REST API 的返回对象【英文标题】:Entity Model or Pojo Class as a return object of REST API 【发布时间】:2019-12-09 14:53:05 【问题描述】:我正在使用 REST API, 如果直接将模型类对象列表作为对用户的响应,是否有任何错误。 还是我需要在返回之前将那些实际模型类映射到任何 POJA 类?
例如: 如果 API 忘记了所有用户(“/Users”)
那么直接返回是不是一个好的编码方式
return userRepository.findAll();
或者需要在返回之前将其转换为任何List<UserPOJO>
?
或者有什么好的编码标准吗?
【问题讨论】:
【参考方案1】:根据我的经验,通常最好将实体映射到等效的 POJO 类。
这里有几个原因:
1) 大多数时候,您不需要存储在实体中的所有数据。您只能映射响应中所需的子集。
2) 从安全的角度来看,有某种中间立场总是好的,您可以在其中过滤掉实际上不应该放入响应中的敏感数据。或者仅适用于您可以在映射期间决定的某些用户。
3) Hibernate 对象不是普通对象,它们是代理。这可能会导致不必要的延迟加载,例如 @OneToMany
和 @ManyToMany
关系。你应该能够控制它,根据我的经验,杰克逊会加载所有可能的东西,除非你用 @JsonIgnore
注释它。
除非您正在使用一个非常简单且安全性不高的应用程序,否则我将继续使用 Hibernate 对象。但除此之外,在大多数情况下,我会选择映射。
【讨论】:
以上是关于实体模型或 Pojo 类作为 REST API 的返回对象的主要内容,如果未能解决你的问题,请参考以下文章
使用 Rest Template 交换方法将 Json 映射到 POJO 类
如果 xml 元素命名约定与 POJO 属性命名约定不同,则发送到 Spring Boot REST API 的 XML 元素不会映射到 POJO
如果xml元素命名约定与POJO属性命名约定不同,则发送到Spring Boot REST API的XML元素不会映射到POJO
Android java:如何创建 POJO 并将其转换为 Cloud Firestore REST API 可接受的 JSON