文章目录
-
- 一、axios介绍
- 二、安装axios
- 三、 案例
- 四、框架整合
- 五、插件
一、axios介绍
什么是 axios? Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。 特性: 1、从浏览器中创建 XMLHttpRequests 2、从 node.js 创建 http 请求 3、支持 Promise API 4、拦截请求和响应 5、转换请求数据和响应数据 6、取消请求 7、自动转换 JSON 数据 8、客户端支持防御 XSRF
浏览器支持:
二、安装axios
- 方法一:速度慢
npm install axios -g
- 方法二:速度快
cnpm install axios -g
参数说明:
-g:
表示全局安装,将会安装在你配置的:C:UsersXinLiunodejsnode_global
目录下。如果不指定则为当前文件夹所在目录(局部);
安装成功后如下所示:
3. 无需安装,直接使用cdn
代码语言:javascript复制<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
三、 案例
- 执行 GET 请求
// 为给定 ID 的 user 创建请求
axios.get('/user?ID=12345')
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
// 上面的请求也可以这样做
axios.get('/user', {
params: {
ID: 12345
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
- 执行 POST 请求
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
- 执行多个并发请求
function getUserAccount() {
return axios.get('/user/12345');
}
function getUserPermissions() {
return axios.get('/user/12345/permissions');
}
axios.all([getUserAccount(), getUserPermissions()])
.then(axios.spread(function (acct, perms) {
// 两个请求现在都执行完成
}));
四、框架整合
1、整合vue-axios
基于vuejs 的轻度封装
1.1 安装vue-axios
代码语言:javascript复制cnpm install --save axios vue-axios -g //-g:全局安装
1.2 将下面代码加入入口文件:
代码语言:javascript复制import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, axios)
按照这个顺序分别引入这三个文件: vue, axios and vue-axios
1.3 你可以按照以下方式使用:
代码语言:javascript复制Vue.axios.get(api).then((response) => {
console.log(response.data)
})
this.axios.get(api).then((response) => {
console.log(response.data)
})
this.$http.get(api).then((response) => {
console.log(response.data)
})
五、插件
- axios-retry
Axios 插件 重试失败的请求
1.1 安装
代码语言:javascript复制cnpm install axios-retry -g //-g:全局安装
1.2 使用
代码语言:javascript复制// CommonJS
// const axiosRetry = require('axios-retry');
// ES6
import axiosRetry from 'axios-retry';
axiosRetry(axios, {
retries: 3 });
axios.get('http://example.com/test') // The first request fails and the second returns 'ok'
.then(result => {
result.data; // 'ok'
});
// Exponential back-off retry delay between requests
axiosRetry(axios, {
retryDelay: axiosRetry.exponentialDelay});
// Custom retry delay
axiosRetry(axios, {
retryDelay: (retryCount) => {
return retryCount * 1000;
}});
// 自定义 axios 实例
const client = axios.create({
baseURL: 'http://example.com' });
axiosRetry(client, {
retries: 3 });
client.get('/test') // 第一次请求失败,第二次成功
.then(result => {
result.data; // 'ok'
});
// 允许 request-specific 配置
client
.get('/test', {
'axios-retry': {
retries: 0
}
})
.catch(error => {
// The first request fails
error !== undefined
});
注意:除非 shouldResetTimeout被设置, 这个插件将请求超时解释为全局值, 不是针对每一个请求,二是全局的设置。
1.3 测试 克隆这个仓库 然后 执行:
代码语言:javascript复制cnpm test
- vue-axios-plugin
Vuejs 项目的 axios 插件
2.1 安装
可以通过script标签引入,无需安装:
代码语言:javascript复制<!-- 在 vue.js 之后引入 -->
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/vue-axios-plugin"></script>
代码语言:javascript复制cnpm install --save vue-axios-plugin -g //-g:全局安装
然后在入口文件配置如下:
代码语言:javascript复制import Vue from 'Vue'
import VueAxiosPlugin from 'vue-axios-plugin'
Vue.use(VueAxiosPlugin, {
// 请求拦截处理
reqHandleFunc: config => config,
reqErrorFunc: error => Promise.reject(error),
// 响应拦截处理
resHandleFunc: response => response,
resErrorFunc: error => Promise.reject(error)
})
2.2 示例 在 Vue 组件上添加了 $http 属性, 它默认提供 get 和 post 方法,使用如下:
代码语言:javascript复制this.$http.get(url, data, options).then((response) => {
console.log(response)
})
this.$http.post(url, data, options).then((response) => {
console.log(response)
})
你也可以通过 this.$axios 来使用 axios 所有的 api 方法,如下:
代码语言:javascript复制this.$axios.get(url, data, options).then((response) => {
console.log(response)
})
this.$axios.post(url, data, options).then((response) => {
console.log(response)
})
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/201105.html原文链接:https://javaforall.cn