2010-02-26 44 views
1

歷史上操作系統的目錄結構已經樹:屬性:當前的REST架構工具是否限於樹形結構?

  • C:
    • 的Windows
      • System32下
    • Program Files文件
      • 共同文件
      • 的Internet Explorer

,其餘建築模擬同樣的事情:

但是,看目前的結構,我需要做的搜索:

  • 所有圖片並非來自芬蘭 ?
  • 2005年拍攝的所有照片?
  • 時間軸上的所有照片?

對每個樹層次結構組合執行REST接口效率不高。您需要更高效的信息管理;你需要一個屬性系統而不是一個樹形結構。 (呵呵,爲什麼操作系統不是基於屬性?)

StackOverflow的和谷歌似乎使用帶有 「+」 的屬性和語法 - 標記,如:

今天的框架如WCF和ASP.NET MVC對RESTful樹結構有很好的支持。但是是否支持屬性結構?你會不會調用一個仍然是REST的屬性結構?

我想創建一個attribute-WebService並將它與Silverlight客戶端中的LINQ一起使用...哪種方法最適合啓動?:-)

回答

3
+0

嗯,讀得太快了。達雷爾的回答更重要。但我的也可能有用。 – 2010-02-26 17:15:26

+0

感謝您的回覆。其實這更多是我問的。那些示例網址僅僅是爲了證明你爲了聲明接口的形狀而做了太多工作。當實際上形狀不會給你帶來功能,也沒有足夠的自由度。 – 2010-02-26 18:40:46

5

爲了創建一個有效的REST接口,您需要確定對您的客戶端應用程序有意義的資源。如果你看看你的使用案例:

所有不是來自芬蘭的圖片? 2005年拍攝的所有照片? 時間軸中的所有圖片?

你需要回答的問題是,如果這需要三個資源或只有一個。我假設你想要的不僅僅是這三個查詢,所以最靈活的解決方案是定義一個「圖片集合」的通用資源。

/Thomas/pictures 

從這裏,您希望能夠通過使用查詢參數限制此資源的內容。

/Thomas/pictures?country=not-finland 
/Thomas/pictures?year=2005 

就第三項而言,爲該項目創建單獨的資源可能有意義。

/Thomas/PictureTimeline 

還有其他場景中它可能是有意義的創建額外的資源,如

/Thomas/FavouritePictures 

最重要的事情是確定要建模的資源,然後指定你的應用程序的關鍵概念這些資源是一個URL。試圖通過URL空間進行REST設計會讓你頭撞牆。

+0

是的 - 這是更多的(+1)點。應該休息一下,也許:-) – 2010-02-26 17:16:06

+0

感謝您的答覆Darrel。你寫了一篇很好的教程,介紹如何定義一個REST服務接口。 :)(儘管這不是問題的主題。) – 2010-02-26 18:54:46

+0

簡短回答:當您想通過不同的軸訪問資源集時,使用查詢字符串參數。所有的工具都應該支持這些。 – 2010-02-26 19:28:06