Java 在REST中优化混合API有效负载

Java 在REST中优化混合API有效负载,java,rest,serialization,gson,spark-java,Java,Rest,Serialization,Gson,Spark Java,我觉得这是一个标准问题,有一个定义良好的最佳实践,但由于某些原因,无法找到它们:) 我们有一个RESTAPI服务器(返回JSON对象的Spark)体系结构。当前,当客户端请求资源时,我们序列化该对象及其持有的所有对象。我想根据请求优化有效负载。这意味着只序列化UI所需的字段 例如: <GET> /users/<userId> - return all the user with Address object <GET> /users - return all

我觉得这是一个标准问题,有一个定义良好的最佳实践,但由于某些原因,无法找到它们:)

我们有一个RESTAPI服务器(返回JSON对象的Spark)体系结构。当前,当客户端请求资源时,我们序列化该对象及其持有的所有对象。我想根据请求优化有效负载。这意味着只序列化UI所需的字段

例如:

<GET> /users/<userId> - return all the user with Address object
<GET> /users - return all the users with out the Address (just the top level)
<GET> /transactions/<businessId> - returns all the transactions with User object that contains only the userId and the user name.
/users/-返回带有地址对象的所有用户
/用户-返回不带地址的所有用户(仅限顶层)
/transactions/-返回用户对象中仅包含用户ID和用户名的所有事务。
我熟悉将字段标记为
瞬态
,但我正在寻找比这更细粒度的内容


我想到的一个选择是每次通话都使用,但我希望有更好的方法

既然您提到了GSON,您应该使用。

是的!!感谢修复看起来像Spark提供的可能有助于产生所需输出的解决方案。这似乎类似于。您还可以声明自定义文档类型,即一个用于包含地址的用户数据,另一个用于不包含地址的用户数据,尽管并非每个客户端都能够正确处理这些自定义文档类型。