Bootstrap

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

 

;