2011-05-26 14 views
3

我正在構建一個API,並希望Ajax能夠與它交互。該API需要允許插入,更新和刪除數據。通過GET允許這些操作是否是一個好主意?API - 使用GET來添加,編輯和刪除?

例如:http://api.domain.com/insert_person/?name=joe

我原來的計劃方式,用得到我「獲得」的方法(基本上,只是一個簡單的數據庫查詢)和POST的添加,編輯和刪除。問題是JS同源策略,它會使Ajax難以與我的API交互。有一個用於GET的jQuery解決方法(通過JSONP)。

對此提出建議?

回答

5

一句話:NO

GET應始終只用於檢索信息,應該不會有副作用,永遠。

這是一個最佳實踐,涉及到每個Web應用程序,並且與動詞的意圖以及現有軟件如何表現行爲有關。

+0

您對使用POST進行插入,更新和刪除有什麼看法? – StackOverflowNewbie 2011-05-26 04:30:27

+0

這幾乎是大多數瀏覽器的唯一選擇,儘管現代開始​​支持PUT和DELETE動詞。一般來說,遵循動詞是一個好主意,除非你有阻止它的約束,例如http://en.wikipedia.org/wiki/Representational_State_Transfer – Paul 2011-05-26 04:34:27

1

如果您試圖繞過相同的原產地政策,通過JSONP GET是唯一可能的前端解決方案。如果你已經控制了後端,你可以設置一個與頁面位於同一域的代理服務,但是可以在API服務中進行中繼。

如果您打算繼續使用JSONP GET路徑,請確保您閱讀了XSS和CSRF。

+0

你能詳細介紹一下代理服務嗎?我不知道如何去做。謝謝。 – StackOverflowNewbie 2011-05-26 04:32:19

1

添加另一層來處理您的代碼並與您的數據庫(不同的域)進行交互。

你仍然會使用POST,你可以在服務器端的數據庫的請求,用什麼都語言你用,例如PHP的工作將使用捲曲。(製作要求不同的域)

如果你允許使用get與你的數據庫進行交互,那麼任何人都可以簡單地鍵入他們想要的命令,所以是避免它。

相關問題