2017-06-06 72 views
0

我试图确定从1个REST端点返回不同对象的最佳方法。REST设计模式1端点,不同的对象返回类型

实施例:

假设客户端具有客户ID:123,并调用GET /api/customers/123

  • 消费客户机具有客户的没有其他知识,比ID
  • 客户其它返回的可以是个人或公司,每个都有自己独特的属性。每个对象都可以更新

我目前的设计有多个PUT端点,以支持独特的更新

  1. PUT /api/businesses/123
  2. PUT /api/customers/123

我看到的问题是客户端现在必须调用另一个端点来对商业客户执行更新,这会使API更复杂地消耗,我不确定它返回不同的最佳实践从1个GET端点租用对象类型。

有没有其他选择,或者这种方法看起来合理吗?所以我认为我的问题更多的是由于我对待这些实体是真正独特的事实上,他们是相同的(禁止一些元数据属性)。 @Patrick Hofman和@ LB2为您解答。我会重构

+0

因为您添加了端点,我看不到REST API层变得更复杂!显然你只需要一些文档就位... –

+0

这两个端点如何相互关联? –

+0

@PatrickHofman检索个人或商业信息的唯一方法是通过单个GET。 PUT请求之间没有关系,因为它们正在更新单独的实体。 – acsaint

回答

0

您可以使用HATEOAS作为指导客户的方式,在各自的相关资源。

该备份的GET调用将几乎是这两种模式的结合数据属性的模型 - 这是否是一个好主意与否实际上取决于不同的是如何你BusinessCustomer模型。如果有理由接近于类似的细微差别,那么也许合并是合理的。

但是,对于每种类型,您都需要为PUT生成适当的链接,指导客户端在何处进行更新。发送更新的内容取决于您的服务和客户之间的合同。

+0

我已经为实体各自的PUT端点实施了HATEOS链接,我喜欢API成为“可自我发现的”。我喜欢将两种模型相结合的想法,因为它可以消除我目前使用的复杂映射(CustomerBaseModel - >(IndividualModel,BusinessModel))。 – acsaint