2011-12-05 92 views
1

同時建立我的web服務的一個RESTful API,我試圖給客戶link relations,例如(這是一個GET入口點返回):如何爲POST端點創建鏈接關係?

<doc> 
<links> 
    <link rel="self" href="/home"/> 
    <link rel="post" href="/post-new-article"/> 
</links> 
</doc> 

我期待客戶瞭解,在爲了發佈一篇新文章,他必須提交POST請求至/post-new-article並將"text"作爲查詢參數。

但是我沒有在文檔中對"POST"做任何說明,而且我也沒有告訴他我在期待哪個HTTP查詢參數。我應該如何以及在哪裏提供這些信息?有沒有關於它的事實上的標準/公約?

回答

2

技術上正確的答案是它由文檔的媒體類型定義。例如,假設API服務於HTML。客戶端是瀏覽器。按照慣例,當用戶代理(瀏覽器)訪問資源(由錨標籤標識)時,它向服務該API的服務器發出HTTP GET。假設一切按計劃進行,服務器返回該資源的另一個HTML表示。

同樣地,當用戶代理提交一個表單它除非form標籤的method屬性指示它應該POST數據通過默認發出HTTP GET。 (詳細信息here。)

您的API文檔應詳細說明您的REST服務使用的介質類型。如果它是自定義類型,那麼規範應該包含以下鏈接的規則。如果您的API通過HTTP運行,那麼規則將指定GET,POST,DELETE等以及任何其他要求/約定。

來自Roy自己:http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven