RESTful 接口規范


最近一直在使用Restful API,最近正好看到一篇自定義restful接口規范的“拋磚引玉”得的文章,索性翻譯一下,與大家分享。 原文地址:http://java.dzone.com/articles/restful-standard-resolved

最近,我正在使用RESTfull的方式構建一個web服務。盡管現在有很多的一般的指導和提示告訴你如何定義restful接口,但是卻沒有一個明確的標准或大家都接受的schema定義去遵循。

在網上獲取了一些信息后,我打算打破這一局面:)我打算分享一下我定義的規則和結構,並且很希望能得到一些反饋來幫助我完善這個規則,所以,不要猶豫,請毫無留情給我指出錯誤和毛病吧。</div>

高級別的模式是:
http(s)://server.com/app-name/{version}/{domain}/{rest-convention}

這里,{version}代表api的版本信息。{domain}是一個你可以用來定義任何技術的區域(例如:安全-允許指定的用戶可以訪問這個區域。)或者業務上的原因。(例如:同樣的功能在同一個前綴之下。)

{rest-convention} 代表這個域(domain)下,約定的rest接口集合。
單資源( singular-resourceX )
url樣例:order/  (order即指那個單獨的資源X)
  • GET - 返回一個新的order
  • POST- 創建一個新的order,從post請求攜帶的內容獲取值。
單資源帶id(singular-resourceX/{id} )
URL樣例:order/1 ( order即指那個單獨的資源X )
  • GET - 返回id是1的order
  • DELETE - 刪除id是1的order
  • PUT - 更新id是1的order,order的值從請求的內容體中獲取。
復數資源(plural-resourceX/)
URL樣例:orders/
  • GET - 返回所有orders
復數資源查找(plural-resourceX/search)
URL樣例:orders/search?name=123
  • GET - 返回所有滿足查詢條件的order資源。(實例查詢,無關聯) - order名字等於123的。
復數資源查找(plural-resourceX/searchByXXX)
URL樣例:orders/searchByItems?name=ipad
  • GET - 將返回所有滿足自定義查詢的orders - 獲取所有與items名字是ipad相關聯的orders。
單數資源(singular-resourceX/{id}/pluralY)
URL樣例:order/1/items/ (這里order即為資源X,items是復數資源Y)
  • GET - 將返回所有與order id 是1關聯的items。
singular-resourceX/{id}/singular-resourceY/
URL樣例:order/1/item/
  • GET - 返回一個瞬時的新的與order id是1關聯的item實例。
  • POST - 創建一個與order id 是1關聯的item實例。Item的值從post請求體中獲取。
singular-resourceX/{id}/singular-resourceY/{id}/singular-resourceZ/
URL樣例:order/1/item/2/package/
  • GET - 返回一個瞬時的新的與item2和order1關聯的package實例。
  • POST - 創建一個新的與item 2和order1關聯的package實例,package的值從post請求體中獲得。
上面的規則可以在繼續遞歸下去,並且復數資源后面永遠不會再跟隨負數資源。
總結幾個關鍵點,來更清晰的表述規則。
  • 在使用復數資源的時候,返回的是最后一個復數資源使用的實例。
  • 在使用單個資源的時候,返回的是最后一個但是資源使用的實例。
  • 查詢的時候,返回的是最后一個復數實體使用的實例(們)。
希望你的關注能幫助我完整這個結構並解決你可能偶然遇到的問題。
在下一篇文章里,在這個結構完善之后,我將會一些技術上的樣例如何在Spring MVC3.1中,使用它。
OneCoder注: OneCoder只做翻譯,不代表統一文中觀點,Rest URL的定義本來也算是一個仁者見仁智者見智的事情。該文下面的評論中,就有人發表的不同的觀點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM