2014-10-19 38 views
2

如果API僅允許檢索數據(通過GET)並且不允許Create,Update或Delete,它仍然是RESTful?如果API僅使用GET/Retrieve,則REST風格的API爲

我懷疑這是因爲維基百科說:「當一個客戶擁有資源的表示,包括附加任何元數據,它有足夠的信息來修改或刪除該資源。」作爲REST的約束。

我很抱歉,如果這似乎是一個愚蠢的問題,但我試圖讓的地步,我可以說「我理解REST」信心十足。

+0

從GET請求發送到客戶端的狀態可能確實包含稍後更新該狀態所需的所有信息。服務器不需要*允許*更新或公開其功能,但客戶端仍然可以保存更改狀態所需的信息。 – David 2014-10-19 13:45:29

回答

1

我相信API仍然是RESTful的,如果即使沒有實現所有的動詞。這對於所有資源都沒有意義。一些動詞可能不適用,或者客戶可能無權執行它們。

拿報紙爲例。我可以看到,GET是唯一可用的動詞,因爲新聞網站可能只發布用於閱讀(即獲取)文章的API。

至於維基百科的定義,我會稍微改變一下,說「它有足夠的信息去嘗試修改或刪除資源。」

和API可以通過響應代碼通信支持/不支持某些動詞的。如果不支持DELETE,則客戶端DELETE請求會看到HTTP 405(不支持)響應。

2

是的,系統即使不允許修改資源,也可以使用REST。

最常見的實現和使用REST是用於萬維網(即使RESTfulness實現聖維特不同程度的成功)HTTP 1.1。絕大多數資源是隻讀的。

1

REST不耦合到任何特定的協議,所以什麼方法正在使用不影響API的RESTfulness,只要用於其標準化行爲的方法和的任何偏差都記錄。例如,沒有什麼能夠阻止你使用RETR方法在FTP上實現類似的「只讀」API。

真正重要的是客戶端如何獲取他們正在檢索的資源的URI。如果他們正在使用帶外信息,例如文檔中的URI模式,則不是RESTFUL。資源應該有鏈接引用對方,客戶端應該能夠從初始入口點URI找到他們想要的任何東西。如果您對此有疑問,請爲HATEOAS做一些Google搜索。