REST设计模式1端点,不同的对象返回类型

时间:2017-06-06 14:21:38

标签: c# rest asp.net-web-api

我试图确定从1个REST端点返回不同对象的最佳方法。

示例:

假设客户有一个客户ID:123并且调用GET /api/customers/123

  • 消费客户除了ID
  • 外,没有其他客户知识
  • 退回的客户可以是个人或商家,每个人都有自己独特的属性。这些对象中的每一个都可以更新

我目前的设计有多个PUT端点来支持唯一更新

  1. PUT /api/businesses/123
  2. PUT /api/customers/123
  3. 我看到的问题是客户端现在必须调用另一个端点来执行Business客户端的更新,这会使API更加复杂,并且我不确定从1返回不同对象类型的最佳做法GET端点。

    有没有其他选择或者这种方法看起来合理吗?

    编辑:所以我认为我的问题更多是因为我对待这些实体确实是独一无二的,事实上,它们是相同的(除了一些元数据属性) 。 @Patrick Hofman和@ LB2的答案。我会重构

1 个答案:

答案 0 :(得分:0)

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

支持GET调用的模型几乎可以将两个模型的数据属性结合起来 - 无论这个好主意与否真的取决于您Business和{{{{{}的不同之处1}}模型。如果有理由接近类似的微小差异,那么或许合并是合理的。

但是,对于每种类型,您都会为Customer生成正确的链接,指导客户端在何处进行更新。发送更新内容取决于您的服务与客户之间的合同。