2012-11-13 32 views
1

我剛開始學習如何設計/編寫RESTful API。我有一個普遍的問題:API設計 - JSON或URL參數?

假設我有某種簡單的SQL數據庫,我正在寫一個API,允許創建一個新的記錄,查看記錄,刪除記錄或更新記錄。

假設我想刪除一條記錄,是通常最好在URL中記錄的ID通過,例如,/api/delete_record?id=10,或者是它更好地做一些事情,如:

/api/record,並把它接受GET,POST,PATCHDELETE,並且通過請求中的JSON正文處理數據。

我已經在Python中使用Flask編寫了一個小API,我所擁有的只是一個URL:/record它接受所有上述HTTP方法。它查看請求中的方法,並相應地預計JSON中的請求正文。這被認爲是好的或不好的做法?

任何建議將不勝感激。請注意,我對這一切仍然很陌生。我以前使用過API,但是我從未開發過任何API。謝謝!

回答

3

正確的REST式刪除資源的方式是發送DELETE請求,並將作用域信息放在URI(而不是正文)中,如/api/records?id=10/api/records/10。方法信息應該在HTTP方法中,而不是URI。

我建議你閱讀「REST風格的Web服務」來學習API設計的最佳實踐。

+0

更新(HTTP PATCH)如何?你會傳遞URI中的ID和JSON請求正文中的內容嗎?或者所有的內容都是URI參數? – darksky

+0

你可能應該使用PUT進行更新(顯然PATCH對於部分更新是可以的,我不確定,但對於一般情況是PUT)。作爲一個經驗法則,您將該方法放在HTTP方法中,以及URI中的所有範圍識別信息(用於識別要與之交互的資源)以及正文中的數據。因此,對於更新,您可以將內容放在json主體上。 –