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 ...
随机推荐
- 踩坑记录--接口调用,传参DataTable报错
问题描述 服务端提供接口,接口参数包含DataTable类型,客户端调用显示请求报错,Postman调用显示Could not get response 解决 原因 接口实现基于wcf,而wcf参数类 ...
- C# Fakes
我们为了测试程序的运行逻辑,需要写单元测试来验证程序的逻辑.有的时候我们的逻辑需要依赖于外界的事物(需要一个文件,eg:数据库),我们不可能在运行单元测试的计算机都创建一个数据库,所以这个时候我们就需 ...
- servlet通过响应头Content-Disposition实现文件下载效果
package day08; import java.io.File; import java.io.FileInputStream; import java.io.IOException; impo ...
- 初识apache DBCP连接池
连接案例: 首先:我们使用的是mysql数据库,所以要有一个mysql和java的JDBCjar包: 然后是DBCP中的两个jar包,DBCP使用的话,需要两个包: dbcp.jar和pool.jar ...
- python3使用pycuda执行简单GPU计算任务
技术背景 GPU的加速技术在深度学习.量子计算领域都已经被广泛的应用.其适用的计算模型是小内存的密集型计算场景,如果计算的模型内存较大,则需要使用到共享内存,这会直接导致巨大的数据交互的运算量,通信开 ...
- struts2拦截action多种方法
按照教程写的,运行的时候显示There is no Action mapped for namespace [/] and action name [login!method1] associated ...
- eval()函数的使用
1.eval() 函数作用:可以接受一个字符串str作为参数,并把这个参数作为脚本代码来 执行. 2.参数情况:(1)如果参数是一个表达式,eval() 函数将执行表达式: (2) 如果参数是Java ...
- 你知道 ES6~ES12等叫法是怎么来的吗?
你知道 ES6~ES12等叫法是怎么来的吗? 前言 作为一名前端开发,学习 JavaScript 自是天经地义的事,但是,JavaScript 的发展历史是怎样的,恐怕有相当一部分人都不太了解. 我们 ...
- MySQL日志系统bin log、redo log和undo log
MySQL日志系统bin log.redo log和undo log 今人不见古时月,今月曾经照古人. 简介:日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息,主要包括错误日 ...
- 老司机带你体验SYS库多种新玩法
导读 如何更加愉快地利用sys库做一些监控? 快来,跟上老司机,体验sys库的多种新玩法~ MySQL5.7的新特性中,非常突出的特性之一就是sys库,不仅可以通过sys库完成MySQL信息的收集,还 ...