axios的简单的使用
Axios 是什么?
Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。
特性
- 从浏览器创建 XMLHttpRequests
- 从 node.js 创建 http 请求
- 支持 Promise API
- 拦截请求和响应
- 转换请求和响应数据
- 取消请求
- 自动转换JSON数据
- 客户端支持防御XSRF
基础用法
引入之后直接使用,不做任何配置
import axios from 'axios';
// 向给定ID的用户发起请求
axios.get('/user?ID=12345')
.then((response) => {
// 处理成功情况
console.log(response);
})
.catch((error) => {
// 处理错误情况
console.log(error);
})
常规用法
一般我们在项目中使用都会统一的配置接口的baseUrl,超时时间等等
import axios from 'axios';
const _axios = axios.create({
baseUrl: 'http://localhost:9333/api',
timeout: 1000 * 15,
})
配置请求拦截器
在请求拦截器中可以做一些常规配置,比如要给请求头添加token或附加一些特殊的共有数据等等
_axios.interceptors.request.use(config=>{
// 添加token
config.headers.token = 'token';
// do something
},error=>Promise.reject(error))
配置返回拦截器
在请求拦截器中可以做一些常规配置,比如要给请求头添加token或附加一些特殊的共有数据等等
_axios.interceptors.response.use(config=>{
// do something
},error=>{
// 做一些统一的错误处理
// 401 需要授权
// 404 接口不存在
// 405 请求方式不允许,本来接口是get的而你使用了post
// 等等
})
取消重复请求
在项目中会经常碰到一个按钮连续多次的快速点击,这样就会在极短的时间内请求多次,实际上我们只需要一次返回结果就可以,这个时候就可以取消之前多次的重复提交。
在此我们会用到 axios.CancelToken 这个方法,具体使用方法可以查看文档
封装取消请求的方法
class CancelToken {
constructor() {
this.store = new Map();
}
add (config) {
const key = this.getKey(config);
new axios.CancelToken((cancel) => {
if (this.store.has(key)) {
this.remove(config)
}
this.store.set(key, cancel);
});
}
remove (config) {
const key = this.getKey(config);
if (this.store.has(key)) {
let cancel = this.store.get(key);
cancel(key);
this.store.delete(key);
}
}
// 根据请求参数获取唯一的key
getKey(config){
const { method, url, params, data } = config;
return [method, url, params, data].join('-');
}
}
使用CancelToken方法
const cancelToken = new CancelToken();
// 请求拦截器
axios.interceptors.request.use(config=>{
cancelToken.add(config);
},error=>Promise.reject(error))
// 接收拦截器
axios.interceptors.response.use(
response => {
const config = response.config;
cancelToken.remove(config)
Promise.resolve(response)
},
error => {
return Promise.reject(error);
}
);
至此,axios的常规使用就介绍完了,感谢各位的阅读。
axios的简单的使用的更多相关文章
- vue中axios的简单使用
我们一般在用jq的时候会使用到ajax来进行与服务器之间的交流,vue中也提供了相应的类似于ajax的方法-axios来进行与服务器之间的数据传递 现在的这篇是最简单的使用,后续会添加上来复杂的使用 ...
- vue2.0 之 douban (六)axios的简单使用
由于项目中用到了豆瓣api,涉及到跨域访问,就需要在config的index.js添加代理,例如 proxyTable: { // 设置代理,解决跨域问题 '/api': { target: 'htt ...
- vue项目中关于axios的简单使用
axios介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中 官方仓库:https://github.com/axios/axios 中文文档:htt ...
- 一个axios的简单教程
转载于:https://www.jianshu.com/p/13cf01cdb81f 转载仅供个人学习 首先要明白的是axios是什么:axios是基于promise(诺言)用于浏览器和node.js ...
- axios的简单使用
axios是一个通用的ajax请求库,vue 2.0以后,推荐使用axios Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 使用: 1.下载安装 n ...
- vue2.0 Axios 的简单用法
安装 使用 npm: $ npm install axios 使用 bower: $ bower install axios 使用 cdn: <script src="https:// ...
- axios的简单封装及在组件内使用
/**第一步 * 配置编译环境和线上环境之间的切换 * baseUrl: 域名地址 * routerMode: 路由模式 * imgBaseUrl: 图片所在域名地址 * */ let Host = ...
- Axios的简单用法
一转眼Vue 3.0都要发布了,学习使用Vue也有一段时间了,记录一下axios的用法 Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中,有点类似于aja ...
- 网络模块axios的简单应用
一.axios的基本使用 例子中使用到的url仅作为示例,不一定有效,想要复现代码需要使用能够提供数据的有效服务器接口url 1.1.什么是axios axios:ajax i/o system:是用 ...
- Vue:对axios进行简单的二次封装
主要做3点: 1.配置一个请求地址前缀 2.请求拦截(在请求发出去之前拦截),给所有的请求都带上 token 3.拦截响应,遇到 token 不合法则报错 // 对 axios 的二次封装 impor ...
随机推荐
- Spring Boot 项目集成Redis
目录 集成方式 使用Jedis 使用spring-data-redis Redis的安装 绑定配置 获取Redis客户端 Redis工具的编写 使用 集成方式 使用Jedis Jedis是Redis官 ...
- SpringBoot中实现支付宝支付
本文只介绍当面付(扫码支付)和APP支付 一. 接入准备 #这里分两种情况,正式环境和沙箱环境,本文使用沙箱环境 1.进入支付宝开放平台,创建应用 登录 支付宝开放平台,创建应用并提交审核,审核通过后 ...
- SQL 练习31
查询任何一门课程成绩在 70 分以上的姓名.课程名称和分数 SELECT Sname,cname,Course.CId,SC.score from Student,Course,sc WHERE St ...
- Nginx 真实的 IP
配置 Nginx 如果你的 Java 项目使用了 Nginx 代理,那么还需要进行以下配置,才能顺利获取到真实的 IP,否则只能获取到 127.0.0.1. 在 Nginx 的配置文件里,找到你 Ja ...
- C# 计算文件的MD5
MD5的作用详见:https://baike.baidu.com/item/MD5/212708?fr=aladdin public static string GetFileMD5(string f ...
- ES6两种静态属性的书写方法
1.这种可以不用实例化对象就能输出. class Car{ constructor(){ } } Car.tool=4 console.log(Car.tool);//4 2.必须实例化后才能输出.但 ...
- eh-admin一套前后端一体的轻量级后台管理系统
https://gitee.com/DawnYang/eh-admin 主要技术 后端技术:Spring Boot,Apache Shiro,MyBatis-Plus等: 前端技术:Jquery,La ...
- golang redis
安装 下载第三方包: go get -u github.com/go-redis/redis/v9 连接 // 定义一个rdis客户端 var redisdb *redis.Client // 初始化 ...
- 前缀和的n个神奇操作
前情回顾 前缀和的基础用法戳这里->传送门 众所周知,简单的前缀和解决的一般都是静态查询的问题,例如区间和.区间积等 操作的时候也很简单,就是根据需要来维护一个数组,每次查询的时候就用到tr[r ...
- RabbitMQ详解(一)——
RabbitMQ详解(一)-- https://www.cnblogs.com/liuwenwu9527/p/11989216.html https://www.cnblogs.com/ideal-2 ...