axios
是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
axios需要在用到它的每个vue组件里进行import导入,如果不想在每一个组件里都引入,则可以在main.js
文件里将axios挂载到Vue的全局prototype下(Vue.prototype.$http = axios
)。
以后在每个组件里就可以直接使用 this.$http.get()
这类方法进行调用axios请求了。 类似的,如果想将某些组件变成全局的,都可以采用挂载到Vue.prototype下的方法。
一些有用的全局设置
-
baseURL设置
axios.defaults.baseURL= ‘https://cnodejs.org/api/v1/’ 只要在main.js里写上这个设置,则以后再调用接口就不用写前面这串基地址了。如下面所示。
axios.get(’/user?ID=12345’)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
2… axios拦截器
拦截每一次的axios,ajax请求和响应,然后在网络请求完成之前进行相应的处理。
添加请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么 比如先判断某个条件,或者判断是否携带访问密钥?
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
// 对响应数据做点什么
return response;
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
});
如果你想在稍后移除拦截器效果,可以这样:
var myInterceptor = axios.interceptors.request.use(function () {/…/});
axios.interceptors.request.eject(myInterceptor);
3 axios请求如果是get请求,在需要参数的情况下,则会把参数信息添加到url后面,我们也可以直接以对象形式把它写在params里面, axios.get(’/news’,{params:{page:1,size=4}}) 等价于 ‘/news?page=1&size=5’
params是添加到url的请求字符串中的,用于get请求.
其他请求则不用加params,直接写一个对象即可。