2016-12-06 71 views
1

每个实体是否应该有一个REST API端点? 例如,我们有员工,他有办公室地址,个人地址和其他地址。当消费者请求员工详细信息时,我们是否应该返回“地址的名字,姓氏和地址”以及消费者为地址对象启动另一个查询。我们如何选择哪种方法以及哪些准则有助于做出这样的决定。每个实体的REST API设计

+0

你的要求是什么。什么是预期的输出。首先确定这些。然后继续执行预期的性能(SLA,可用性)。然后做出决定。 – k1133

回答

0

每个实体应该有一个REST API端点吗?

世界上没有普遍规则。编程只是一门科学。这是另一半的艺术。你决定选择什么。如果不知道你的背景,我们无法给你提供建议。

例如,我们有员工,他有办公室地址,个人 地址,一些其他地址。当消费者请求员工 的详细信息时,我们是否应该返回“名字,姓氏和地址的ID” 和消费者触发另一个地址对象查询。我们如何选择 哪种方法以及哪些准则有助于制定此类决定。

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

0

每个实体应该有一个REST API端点吗?

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

当消费者请求员工详细信息时,我们是否应该返回“firstName,lastName和地址ID”,并且消费者激发地址对象的另一个查询。我们如何选择哪种方法以及哪些准则有助于做出这样的决定。

记住Web应该如何工作是有用的。守备描述了许多的网页体系结构被设计在chapter 4 of his thesis解决上述问题:

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

换句话说,缓存是显著的关注,如果你要在网络规模上进行操作。

如果员工的详细信息是稳定的,那么将他们全部扔进一个长期存档的文档是很好的 - 该文档可以长时间服务于很多请求。另一方面,从文档的缓存副本工作的任何客户端都没有看到最新的更改 - 易失性数据通常希望具有与稳定数据不同的缓存规则。

精细粮食资源往往更容易编辑 - 在HTTP中,PUT取代了资源的状态。较小的资源意味着客户需要跟踪的数据较少,与其他编辑冲突的几率较小。