每个实体的RESTAPI设计

每个实体的RESTAPI设计,rest,api,Rest,Api,每个实体应该有一个RESTAPI端点吗? 例如,我们有员工,他有办公室地址、个人地址和其他地址。当消费者要求提供员工详细信息时,我们是否应该返回“firstName、lastName和地址ID”,然后消费者对地址对象进行另一次查询。我们如何选择有助于做出此类决策的方法和指导方针 每个实体应该有一个RESTAPI端点吗 “RESTful接口的资源通常比核心域模型中的域对象多得多。”——Jim Webber(2011) 当消费者要求提供员工详细信息时,我们是否应该返回“firstName、lastN

每个实体应该有一个RESTAPI端点吗? 例如,我们有员工,他有办公室地址、个人地址和其他地址。当消费者要求提供员工详细信息时,我们是否应该返回“firstName、lastName和地址ID”,然后消费者对地址对象进行另一次查询。我们如何选择有助于做出此类决策的方法和指导方针

每个实体应该有一个RESTAPI端点吗

“RESTful接口的资源通常比核心域模型中的域对象多得多。”——Jim Webber(2011)

当消费者要求提供员工详细信息时,我们是否应该返回“firstName、lastName和地址ID”,然后消费者对地址对象进行另一次查询。我们如何选择有助于做出此类决策的方法和指导方针

记住网络应该如何工作是很有用的。Fielding描述了web架构设计用于解决的许多问题:

超媒体是由嵌入在信息表示中或作为信息表示上方的一层的应用程序控制信息的存在来定义的。分布式超媒体允许在远程位置存储表示和控制信息。就其性质而言,分布式超媒体系统中的用户操作需要将大量数据从存储数据的位置传输到使用数据的位置。因此,必须为大粒度数据传输设计Web体系结构

换句话说,如果您打算在web规模上运行,缓存是一个重要的问题

如果员工的详细信息是稳定的,那么将所有这些信息都放到一个长期文档中是很好的——该文档可以长期服务于许多请求。另一方面,任何使用文档缓存副本的客户端都看不到最新的更改——易失性数据通常希望与稳定数据具有不同的缓存规则

细粒度资源往往更易于编辑-在HTTP中,PUT替换资源的状态。较小的资源意味着客户端要跟踪的数据更少,与其他编辑冲突的可能性也更小

每个实体应该有一个RESTAPI端点吗

“RESTful接口的资源通常比核心域模型中的域对象多得多。”——Jim Webber(2011)

当消费者要求提供员工详细信息时,我们是否应该返回“firstName、lastName和地址ID”,然后消费者对地址对象进行另一次查询。我们如何选择有助于做出此类决策的方法和指导方针

记住网络应该如何工作是很有用的。Fielding描述了web架构设计用于解决的许多问题:

超媒体是由嵌入在信息表示中或作为信息表示上方的一层的应用程序控制信息的存在来定义的。分布式超媒体允许在远程位置存储表示和控制信息。就其性质而言,分布式超媒体系统中的用户操作需要将大量数据从存储数据的位置传输到使用数据的位置。因此,必须为大粒度数据传输设计Web体系结构

换句话说,如果您打算在web规模上运行,缓存是一个重要的问题

如果员工的详细信息是稳定的,那么将所有这些信息都放到一个长期文档中是很好的——该文档可以长期服务于许多请求。另一方面,任何使用文档缓存副本的客户端都看不到最新的更改——易失性数据通常希望与稳定数据具有不同的缓存规则

细粒度资源往往更易于编辑-在HTTP中,PUT替换资源的状态。较小的资源意味着客户端要跟踪的数据更少,与其他编辑冲突的可能性也更小

每个实体应该有一个RESTAPI端点吗

世界上没有普遍的规则。编程只是半门科学。这是另一半人的艺术。你决定选择什么。我们不能在不了解您的背景的情况下向您提供建议

例如,我们有一名员工,他有办公室地址,个人地址 地址,其他地址。当消费者要求员工 详细信息,我们是否应该返回“firstName、lastName和地址ID” 消费者对地址对象发出另一个查询。我们如何选择 哪种方法和指导方针有助于实现这一目标 决定

试着看看它是如何在中实现的。简而言之:只需使用一个查询参数,该参数表示需要包含在结果中的字段/依赖对象的列表

每个实体应该有一个RESTAPI端点吗

世界上没有普遍的规则。编程只是半门科学。这是另一半人的艺术。你决定选择什么。我们不能在不了解您的背景的情况下向您提供建议

例如,我们有一名员工,他有办公室地址,个人地址 地址,其他地址。当消费者要求员工 详细信息,我们是否应该返回“firstName、lastName和地址ID” 消费者对地址对象发出另一个查询。我们如何选择 哪种方法和指导方针有助于实现这一目标 决定


试着看看它是如何在中实现的。简而言之:只需使用一个查询参数,该参数表示需要包含在结果中的字段/依赖对象列表。

您的要求是什么。预期产出是多少。先决定这些。然后转到预期性能(SLA、可用性)。然后做出决定。你的要求是什么。预期产出是多少。先决定这些。然后转到预期性能(SLA、可用性)