从MVC开发人员的角度来看,模型应该只包含与视图相关的属性。那么处理这个RESTful服务场景的最佳实践是什么?
用法1
RESTful端点"my-application/items/"
用于QUERY
以获取绑定到项目的分页列表视图的项目列表。它可能包含许多属性,例如ItemId
,ItemName
,CreatedDate
,ModifiedDate
等。它甚至可能是来自服务器的数据的分页结果(例如10条记录)超过1000)。
用法2
在应用程序的其他区域,我需要这些items
的选择框。在这种情况下,我只需要ItemId
和ItemName
。所有其他属性都无关紧要。
我......
答案 0 :(得分:1)
对我来说,这不是理论上的REST问题。这是一个实施问题。基本上,您在询问是否应该为单独的用例实现不同的端点。当您说与客户交换的信息应该是执行特定任务的最小信息时,我同意您的意见。不这样做的唯一原因是方便或预算。
在用例1中,您应该提供一组广泛的数据,在用例2中,您需要的数据远远少于它们。
可能对用例1使用端点.../items/details
,对用例2使用另一个端点.../items
。
也许您也可以实现单个端点并使用查询参数
.../items?detailed=true
这两种解决方案都是完全可以接受的。
这种考虑背后的理论解释是REST要求服务器交换资源&#39;与客户的代表。 Representation 意味着类似于MVC模型的视图概念:它不是实体本身,它是在给定上下文中描述它的最方便的方式< / em>的
这也意味着不同的上下文可能需要不同的表示。