1. 程式人生 > >ajax請求 與 REST風格

ajax請求 與 REST風格

GET請求:

查詢通常都非同步。除非你依賴於之前的操作結果。async預設為:true。

資料傳送至伺服器的編碼型別contentType預設為:application/x-www-form-urlencoded,key-value的形式能夠滿足GET。

$.ajax({
    type: 'GET',
    dataType: "json",  //json text 伺服器返回的資料型別
    url: '/xx/xx?param1=1&param2=2',
    success: function (result) {

    }
});

POST請求:

$.ajax({
    async: false, //同步false
    type: 'POST',
    dataType: "json", //json text 伺服器返回的資料型別
    contentType: "application/json",
    url: '/xx/xx',
    data: {
        object: JSON.stringify({data: "test"}),
        param: '123'
    },
    success: function (result) {
    },
    error: function (result) {
    }
});

POST請求引數一般會比較多,用物件的方式簡潔方便。

目前使用REST風格,其中包括:

public enum RequestMethod {

   GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE

}

我們常用的就是:GET、POST、PUT、DELETE

jQuery的ajax也都支援這幾種,HTTP規範。目前,瀏覽器支援的問題不用擔心,那是很久之前才要考慮的。

axios,對這幾種請求也都是支援。只是目前,瀏覽器版本要求較高。後續專案可以考慮使用,這裡不多說。

那麼什麼時候,使用什麼請求型別呢?

首先這個是個規範的問題,沒有明確規定查詢不能使用POST。我們儘量遵守規定,不論是從程式碼的可讀性。還是為了以後能得到,各大瀏覽器廠商或者研發者的優化支援等。

大致規範如下:

GET: 查詢資料時,使用。 

POST: 新增資料的時候,使用。(非冪等)

PUT: 修改資料時,使用。(冪等,相同的資料,請求多少次,結果都是相同的。)

DELETE: 刪除資料時使用。

部分參考資料:
jQuery ajax - ajax() 方法
http://www.w3school.com.cn/jquery/ajax_ajax.asp

restful 介面 複雜物件入參
https://www.jianshu.com/p/4f9ec9172415

Axios 中文說明
https://www.kancloud.cn/yunye/axios/234845