2017-01-05 89 views
1

我對使用GETPOST進行Ajax調用的理想情況應該有些混淆。以前,當我們使用ASP.NET MVCKnockoutJS時,我們曾經從jQuery調用自定義$.postJson(url,data,callback)到我們的MvcController(即使對於GET操作)。最近,我們使用ASP.NET Web APIAngularJS,並使用$http(url,method)GET,並在我們的url屬性中傳遞搜索參數,並使用FromUri屬性在ApiController中捕獲它們。現在GET vs POST在哪裏使用哪種方法

我的問題是,什麼應該是理想的方案和​​最佳實踐使用GET & POST(附註:不要從CRUD操作的層面來回答)。

回答

5

有什麼樣的方法應該在服務器端做一個正式的定義:https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

因爲在正式的定義,任何理想答案必然結束聽起來像一個CRUD答案。 GET不應該修改數據,它只應該檢索數據。 POST旨在更改服務器上的數據。

練習,我們經常發現我們自己使用POST作爲解決方法,因爲GET在請求中有效地限制了內容主體。許多數據檢索場景可能需要將內容主體發送到服務器。您可能還會遇到一些可能導致您在POST中發送數據的GET場景中的URL長度問題。所以,如果您嘗試檢索數據,請選擇GET並在需要的地方使用POST。

雖然我可能會使用POST來解決GET的數據檢索限制,但我會從不使用使用GET來修改數據。

+0

豎起大拇指!幾乎總結了一切。謝謝! – izengod

-3

如果您打算添加&更新,請使用POST。 如果您要獲取,請使用GET。

For Best Practice: for log-in,use POST for submitting credentials,which hidden the username/password from sniffed。

+1

這是從CRUD操作的角度來看...... – avilac

+0

POST不會保護用戶名和密碼不被「嗅探」它可能會將其隱藏在查詢字符串中,但它仍然可以訪問。 PUT也用於更新,POST插入(如果查看最佳實踐) – ChrisBint

+0

說實話,我真的不知道他們爲什麼以前只使用$ .postJson(即使對於搜索操作)。我試圖對抗,但似乎每個人都在使用它,而沒有想太多。 – izengod