调用api接口的方法总结
JQuery中的ajax方法:
参数解释:(主要就用到url、type、data、dataType、success、error等,其他的看需求而定)
$.ajax({
url:” “, //请求的地址,类型为string
type:” “, //请求方式,类型为string,两种“get”或者“post”,默认为“get”
timeout: //要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。
async: //要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。
cache: //要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false),设置为false将不会从浏览器缓存中加载请求信息。
data: //要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后
dataType: //要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText 作为回调函数参数传递。可用的类型如下:
xml:返回XML文档,可用JQuery处理。
html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。
script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。
json:返回JSON数据。
jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。
text:返回纯文本字符串。
beforeSend: //要求为Function类型的参数,发送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义HTTP头。在beforeSend中如果返回false可以取消本次ajax请求。
complete: //要求为Function类型的参数,请求完成后调用的回调函数(请求成功或失败时均调用)。
success: // 要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。
(1)由服务器返回,并根据dataType参数进行处理后的数据。
(2)描述状态的字符串。
error: //要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)
contentType: //要求为String类型的参数,当发送信息至服务器时,内容编码类型默认为”application/x-www-form-urlencoded”。该默认值适合大多数应用场合。
…….还有很多,只是基本用不到
})
$.ajax({ url: "http://www.hzhuti.com", //请求的url地址 dataType: "json", //返回格式为json async: true, //请求是否异步,默认为异步,这也是ajax重要特性 data: { "id": "value" }, //参数值 type: "GET", //请求方式 beforeSend: function() { //请求前的处理 }, success: function(req) { //请求成功时处理,一般只用到这一个 }, complete: function() { //请求完成的处理 }, error: function() { //请求出错处理 } });
用vue时,经常用到的。vue-resource和axios
vue-resource(基本不再使用):
优点:体积小、支持主流的浏览器、支持Promise API和URI Templates、支持拦截器。
用法:全局引入后,则在实例中使用。
常用的:
this.$http.get().then();
this.$http.post().then();
this.$http.jsonp().then();
axios:axios是基于promise的用于浏览器和nodejs的HTTP客户端,本身有以下特征:
- 从浏览器中创建XMLHttpRequest;
- 从nodejs发出http请求
- 支持promiseAPI
- 拦截 请求和响应
- 转换请求和响应数据
- 取消请求
- 自动转换JSON数据
- 客户端支持防止CSRF/XSRF攻击
初始化常用的配置项:
axios.defaults.baseURL = \'https://www.baidu.com\'; axios.interceptors.response.use(result => result.data); //=>设置响应拦截器:分别在响应成功和失败的时候做一些拦截处理(在执行成功后设定的方法之前,先会执行拦截器中的方法) axios.defaults.validateStatus = function validateStatus(status) { //=>自定义成功失败规则:RESOLVE / REJECT(默认规则:状态码以2开头算作成功) return /^(2|3)\d{2}$/.test(status); }; //=>设置在POST请求中基于请求主体向服务器发送内容的格式,默认是RAW,项目中常用的是URL-ENCODEED格式 axios.defaults.headers[\'Content-Type\'] = \'appliction/x-www-form-urlencoded\'; axios.defaults.transformRequest = data => { //=>DATA:就是请求主体中需要传递给服务器的内容(对象) let str = ``; for (let attr in data) { if (data.hasOwnProperty(attr)) { str += `${attr}=${data[attr]}&`; } } return str.substring(0, str.length - 1); };
执行get数据请求:
axios.get(\'url\',{ params:{ id:\'接口配置参数(相当于url?id=xxxx)\', }, }).then(function(res){ console.log(res);//处理成功的函数 相当于success }).catch(function(error){ console.log(error)//错误处理 相当于error })
执行post数据请求:
axios.post(\'url\',{data:xxx},{ headers:xxxx, }).then(function(res){ console.log(res);//处理成功的函数 相当于success }).catch(function(error){ console.log(error)//错误处理 相当于error })
axios API 通过相关配置传递给axios完成请求:
axios({ method:\'delete\', url:\'xxx\', cache:false, params:{id:123}, headers:xxx, }) //------------------------------------------// axios({ method: ’post’, url: ’/user/12345’, data: { firstName: ’Fred’, lastName: ’Flintstone’ } });
axios的并发(axios.all,axios.spread):
let axiosList=[ axios.get(\'url1\',{params:xxx,dateType:\'JSON\'}), axios.get(\'url2\',{params:xxx,dateType:\'TEXT\'}), ] axios.all(axiosList).then(axios.spread(function(res1,res2){ console.log(res1,res2)//分别是两个请求的返回值 })
axios包含所有请求方式函数的封装:
axios.get(url [,config]) axios.delete(url [,config]) axios.head(url [,config]) axios.post(url [,data [,config]]) axios.put(url [,data [,config]]) axios.patch(url [,data [,config]]) 当使用别名方法时,不需要在config中指定url,method和data属性。
创建实例:
var instance = axios.create({//初始化数据 baseURL: ’https://some-domain.com/api/’, timeout: 1000, headers: {’X-Custom-Header’: ’foobar’} });