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 ...
随机推荐
- minio-对象存储
1. 简介 官方地址 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务.它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件. ...
- 进程之间的通信(multiprocess.Queue)
一.进程间通信 进程之间的数据是相互隔离的,例如 from multiprocessing import Process def task(): global n # 声明全局变量 n = 999 p ...
- Blazor+Dapr+K8s微服务之开发环境调试
1 安装Dapr开发调试环境 1.1 Dapr 完整安装模式不支持开发调试 在上一篇随笔<Blazor+Dapr+K8s微服务之服务调用>中,我们通过为每个 ...
- NOIP 模拟 $31\; \rm Time$
题解 \(by\;zj\varphi\) 考虑如何才能最优. 每次一定把当前最小值移动到边界上,那么看它向左还是向右移更优. 用树状数组维护一下即可,复杂度 \(\mathcal O\rm (nlog ...
- Docker搭建网页数据库管理-Adminer
为什么Adminer比phpMyAdmin更好? 官网介绍: 用Adminer替换phpMyAdmin,您将获得一个简洁的用户界面,对MySQL功能的更好支持,更高的性能和更高的安全性.请参阅详细比较 ...
- 将数组对象相同key的内容合并
function fireDuplicate (arr) { var arr = JSON.parse(JSON.stringify(arr)) var ids = [] arr.forEach(fu ...
- 【REST】使用RestSharp 库消费Restful Service
使用RestSharp 库消费Restful Service 现在互联网上的服务接口都是Restful的,SOAP的Service已经不是主流..NET/Mono下如何消费Restful Serv ...
- springboot静态资源路径制定
spring.resources.static-location参数指定了Spring Boot-web项目中静态文件存放地址, 该参数默认设置为: classpath:/static, classp ...
- super的两个作用
super与实例没有什么关系,它本身有两个作用的,参考如下理解: 1.super可以当函数用.super作为函数调用时,表示父类的构造函数.示例: class Par { constructor() ...
- Spring Boot +Vue 项目实战笔记(一):使用 CLI 搭建 Vue.js 项目
前言 从这篇文章开始,就进入真正的实践了. 在前端项目开发中,我们可以根据实际情况不同程度地使用 Vue.利用 Vue CLI(或写成 vue-cli,即 Vue 脚手架)搭建出来的项目,是最能体现 ...