GET请求:
查询通常都异步。除非你依赖于之前的操作结果。async默认为:true。
数据发送至服务器的编码类型contentType默认为:application/x-www-form-urlencoded,key-value的形式能够满足GET。
$.ajax({
type: 'GET',
dataType: "json", //json text 服务器返回的数据类型
url: '/xx/xx?param1=1¶m2=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