历史上操作系统目录结构是树:
REST架构模仿同样的事情:
但是,看看当前的结构,我需要进行搜索:
使用每个树层次结构组合执行REST接口效率不高。您需要更有效的信息管理;你需要一个属性系统而不是树形结构。 (哦,为什么操作系统不是基于属性?)
StackOverflow和Google似乎使用属性和语法“+” - 标记如下:
今天的框架如WCF和ASP.NET MVC对RESTful树结构有很好的支持。但是对属性结构有支持吗?你不会把属性结构称为REST吗?
我想创建一个属性-WebService并将其与Silverlight-client中的LINQ一起使用...哪种方法最好? : - )
答案 0 :(得分:5)
为了创建有效的REST接口,您需要确定对客户端应用程序有意义的资源。如果你看一下你的用例:
所有非芬兰的照片? 所有2005年拍摄的照片? 时间轴上的所有图片?
您需要回答的问题是,这需要三个资源还是一个资源。我假设您想要的不仅仅是这三个查询,因此最灵活的解决方案是定义一个“图片集合”的通用资源。
/Thomas/pictures
从这里开始,您希望能够使用查询参数来限制此资源的内容。
/Thomas/pictures?country=not-finland
/Thomas/pictures?year=2005
对于第三个项目,为该项目创建单独的资源可能是有意义的。
/Thomas/PictureTimeline
在其他情况下,创建其他资源(例如
)可能有意义/Thomas/FavouritePictures
重要的是确定要将模型建模为资源的关键概念,然后为这些资源分配URL。尝试通过URL空间进行REST设计会让你头撞墙。
答案 1 :(得分:3)