2014-11-25 49 views
0

我最初建立一個Web API(不與網頁API的任何專家),跟着別人的在線教程中的參數傳遞給一個簡單的GET API調用。的Web API GET VS POST

本來我創建了查詢字符串一個GET,但作爲教程演示使用POST如何讓我的JSON傳遞給在POST API參數的類的對象,這似乎是一個好主意。

後來一位開發商說,這是不好的做法?是嗎?我應該總是使用GET而不是POST這在本質上是它應該是什麼呢?一個GET調用,但我喜歡通過對象傳遞參數,避免與查詢字符串很長的API調用的想法。

所以:

$.ajax({ 
    url: '\api\getlist\1?param2=yyyy&param3=kikkkk&param4=88' etc 
}) 

var params = .... 

$.ajax({ 
    url: '\api\getlist\', 
    data: params 
}) 

我應該怎麼做,更改代碼回使用GET?怎麼樣緩存?

+3

從技術上講,當您從發佈的數據創建新記錄/實體時,enpoint只會返回響應和「POST」,您應該使用'GET'。話雖如此,但出於純粹的實際原因,我有時會創建'POST'端點,以便在需要發送可能導致瘋狂查詢字符串的複雜數據時才檢索數據。 – 2014-11-25 12:29:09

+0

好吧我有複雜的查詢字符串,所以它聽起來就像是完全可以從你說什麼這樣做。怎麼樣緩存? GET緩存和POST不是? – Rob 2014-11-25 12:31:09

+0

瀏覽器可能緩存GET請求,它不會緩存POST請求。 – 2014-11-25 12:35:14

回答

2

你應該看看http documentation in w3c

GET被推薦用於讀取數據,而POST被用來向服務器發送信息(寫入操作)。

從客戶端的角度來看,你可以在jQuery的阿賈克斯設置中設置,以不使用高速緩存與後續代碼:

$.ajaxSetup({ 
    cache: false 
}); 

它會生成對異步請求的隨機參數來做出不同的要求,每次,添加一個像這樣的參數:?_-31312312312