我一直在研究/創建一個REST api,在backbone.js到php上下文中。REST API請求方法輸入參數
我明白HTTP動詞的概念,並當他們應使用
GET - select
POST - create
PUT - update
DELETE - delete
我也明白傳遞一個標識符的概念作爲語義網址,例如
GET http://api/users/123
DELETE http://api/users/123
在這些情況下, 「123」 是id的業務邏輯將使用獲得/刪除用戶。
但是POST和PUT上下文呢?發送請求時
PUT http://api/users/123
的API將更新用戶ID 123提供的參數,這裏就是我的問題出現了。
我會假設輸入參數更新將作爲PUT參數發送。在PHP語法中,這表示爲:file_get_contents('php://input')
(這與刪除請求相同)。
當通過backbone.js測試此功能時,它的工作原理完美。
但是當我嘗試並用
POST http://api/users/
創建一個新元素i將假設輸入值將發送作爲POST參數/ PHP中語法這被表示爲$_POST
。但這不起作用。
經過一番測試,並閱讀了Rails風格的REST API(這是骨幹文檔建議的),我意識到所有請求變量都以相同的方式發送。如果我更改我的代碼以使用file_get_contents('php://input')
來獲取每個請求類型的請求參數,則主幹網完美無缺。
這是REST API的標準公平嗎?或只是「軌道風味」的?
我也想知道這一點。在我看來,對於請求或響應主體的格式,REST風格的API中沒有任何真正的標準,而且我所看到的關於構建REST API的許多內容基本上掩蓋了這個問題。我通常在請求和響應主體中使用純JSON編寫它們,而不是表單編碼。 – Troy