RESful服务的标准有不同的型号?

时间:2017-01-26 17:10:32

标签: rest model-view-controller asp.net-web-api

从MVC开发人员的角度来看,模型应该只包含与视图相关的属性。那么处理这个RESTful服务场景的最佳实践是什么?

用法1

RESTful端点"my-application/items/"用于QUERY以获取绑定到项目的分页列表视图的项目列表。它可能包含许多属性,例如ItemIdItemNameCreatedDateModifiedDate等。它甚至可能是来自服务器的数据的分页结果(例如10条记录)超过1000)。

用法2

在应用程序的其他区域,我需要这些items的选择框。在这种情况下,我只需要ItemIdItemName。所有其他属性都无关紧要。

我......

  • ...吞下我的MVC骄傲,只使用一个臃肿的模型和一个 单个RESTful端点?
  • ...使用某种命名标准创建不同的RESTful端点?
  • ......做点什么吗?

1 个答案:

答案 0 :(得分:1)

对我来说,这不是理论上的REST问题。这是一个实施问题。基本上,您在询问是否应该为单独的用例实现不同的端点。当您说与客户交换的信息应该是执行特定任务的最小信息时,我同意您的意见。不这样做的唯一原因是方便或预算。

在用例1中,您应该提供一组广泛的数据,在用例2中,您需要的数据远远少于它们。

可能对用例1使用端点.../items/details,对用例2使用另一个端点.../items

也许您也可以实现单个端点并使用查询参数

.../items?detailed=true

这两种解决方案都是完全可以接受的。

这种考虑背后的理论解释是REST要求服务器交换资源&#39;与客户的代表。 Representation 意味着类似于MVC模型的视图概念:它不是实体本身,它是在给定上下文中描述它的最方便的方式< / em>的

这也意味着不同的上下文可能需要不同的表示。