axios入门使用
vue项目中axios的基本使用和简单封装
axios中文文档官网 http://www.axios-js.com/docs/
一:不封装直接使用
npm install axios
在main.js里面引用如下
import axios from 'axios'
Vue.prototype.$axios = axios;
在自己的组件中然后使用
getInfo() {
let userInfo = {
name: 'javascript',
pass: 'good'
};
let access_token = 'allow_token';
this.$axios({
method: 'post', // 请求方式
url: '/api/user', // 请求url
data: userInfo, //传参数据
headers: {Authorization: access_token} // 携带用户信息token
}).then(res => {
console.log(res); // 请求成功之后返回的值,在此处进行数据展示处理
}).catch(err => {
console.log(err); // 请求失败返回
})
}
二:简单封装之后进行使用
npm install axios
我们在src文件夹下面新建apis文件夹。
然后主要需要两个文件,一个是axios.js文件,配置基本选项;一个是helpers.js文件,主要进行请求封装;其他的js文件则是具体使用。如下:

axios.js文件如下
import axios from 'axios'
import ELEMENT from 'element-ui';
import router from '../router';
// export const root = process.env.API_ROOT; // 此处我们需要两个axios实例,login请求与其他页面请求稍微有点差别,
// login需要获取到一些用户数据,所以我们单独处理,其他则封装复用即可
// login完成之后,一般获取用户token,此时我们将用户token存到sessionStorage里面即可
const loginInstance = axios.create({
baseURL: '',
// headers: {'Content-Type': 'application/x-www-form-urlencoded'},
withCredentials: false
}); const instance = axios.create({
baseURL: '',
// headers: {'Content-Type': 'application/x-www-form-urlencoded'},
withCredentials: false
});
let access_token = 'jdshfjdshfjdsf'; // 假设这个是登录之后获取到的用户token // 下面的配置是一层拦截,即我们在这个请求发出之前需要做点什么
// 此处是请求发出之前我们需要配置{headers: {Authorization: access_token}}
instance.interceptors.request.use(
// 成功
config => {
if (access_token) {
// config.headers.Authorization = `Bearer ${access_token}`
config.headers.Authorization = access_token;
}
return config;
},
// 失败
error => {
return Promise.reject(error);
}
); // 在请求完成之后我们需要做点什么,简单就是将后端的response进行返回即可
instance.interceptors.response.use(
// 请求成功
response => {
return response;
},
// 请求失败
error => {
if (error.response) {
// 失败则根据其状态码进行对应提示处理
switch (error.response.status) {
case 401:
sessionStorage.removeItem('access_token');
sessionStorage.removeItem('userInfo');
router.push('/login');
ELEMENT.Message.error('身份过期,请重新登录');
break;
case 404:
console.log('请求无效');
break;
case 504:
console.log('请求超时');
break;
case 500:
console.log('请求失败');
break;
case 420:
console.log('请求失败');
break;
}
}
return Promise.reject(error);
}); // 基本封装配置完成,将这两个变量导出即可,方便其他页面使用
export {loginInstance, instance}
helpers.js文件如下(以下常用的login,get,post,del,put,其他暂时不用了解)
import axios from 'axios';
import {loginInstance, instance} from './axios'; // 定义状态码
const STATUS_OK = 200; // 请求成功
const STATUS_DEL = 204; // del请求成功
const STATUS_CREATE = 201; // 新增成功 export function login(url) {
return function (data) {
return loginInstance.post(url, data).then(res => {
const { status, data } = res;
if (status === STATUS_OK) {
return data;
} else {
return Promise.reject(res);
}
}).catch(err => Promise.reject(err.response));
};
} export function get(url) {
// url为地址 params为请求携带参数 config为可能用到的配置
// 如在进行将table表格数据导出为excel时,我们需要传递一个config,
// outputExcel({resCode:this.resCode}, {responseType: 'blob'})
// 具体使用后面说明
return function (params, config) {
return instance.get(url, {
...config,
params
}).then(res => {
const { status, data } = res;
if (status === STATUS_OK) {
return data;
} else {
return Promise.reject(res);
}
}).catch(err => Promise.reject(err.response.data));
};
} export function getJson(url) {
return function () {
return axios.get(url).then(res => {
const { status, data } = res;
if (status === STATUS_OK) {
return data;
} else {
return Promise.reject(res);
}
}).catch(err => Promise.reject(err.response.data));
};
} export function getAll(...urlList) {
return function () {
const getList = urlList.map(url => axios.get(url));
return axios.all(getList).then(axios.spread((...resList) => {
return resList.map(res => res.data);
})).catch(err => Promise.reject(err.response.data));
};
} export function post(url) {
return function (data, config) {
return instance.post(url, data, config).then(res => {
const { status, data } = res;
if (status === STATUS_OK || status === STATUS_CREATE) {
return data;
} else {
return Promise.reject(res);
}
}).catch(err => Promise.reject(err.response.data));
};
} export function del(url) {
return function (params, config) {
return instance.delete(url, {
...config,
params
}).then(res => {
const { status } = res;
if (status === STATUS_DEL || status === STATUS_OK) {
return;
} else {
return Promise.reject(res);
}
}).catch(err => Promise.reject(err.response));
};
} export function put(url) {
return function (data, config) {
return instance.put(url, data, config).then(res => {
const { status, data } = res;
if (status === STATUS_OK) {
return data;
} else {
return Promise.reject(res);
}
}).catch(err => Promise.reject(err.response.data));
};
} export function getBlob(url) {
return function (params, config) {
return instance.get(url, {
params,
...config,
responseType: 'blob'
}).then(res => {
const { status, data } = res;
if (status === STATUS_OK) {
const URL = window.URL || window.webkitURL;
return URL.createObjectURL(data);
}
});
};
} export function form(url) {
return function (data, config) {
return instance.post(url, data, {
...config,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
}
}).then(res => {
const { status, data } = res;
if (status === STATUS_OK || status === STATUS_CREATE) {
return data;
} else {
return Promise.reject(res);
}
}).catch(err => Promise.reject(err.response.data));
};
}
以上封装已经完成,那么接下来则是具体使用了,使用如下
假设此时我们需要登录,则使用封装好的login
apis文件夹下面新建login.js文件
login.js文件
// 导入封装的login
import {login} from './helpers' // 传入url,然后将此userLogin导出,在login.vue文件中使用传如data即可
export const userLogin = login('/abc/d/e');
然后在login.vue文件中发送请求如下:
// 引入userLogin
import { userLogin } from '~api/login' // 点击提交按钮时发送请求
methods: {
onSubmit(param) {
userLogin(param).then(res =>
{
console.log(res)
}).catch(err => {console.log(err)})
}
}
至此,祝大家使用愉快
axios入门使用的更多相关文章
- Day06_商品分类(vuetify-nginx-cors)与品牌查询
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...
- 一个后端开发的 Vue 笔记【入门级】
一 前言 最近找了些教程,顺带着趴在官网上,看了看 Vue 的一些内容,入门的一些概念,以及基础语法,还有一些常用的操作,瞄了一眼,通篇文字+贴了部分代码 9000 多字,入门语法什么的还是很好理解的 ...
- axios 使用入门
[Vue 牛刀小试]:第十五章 - 传统开发模式下的 axios 使用入门 一.前言# 在没有接触 React.Angular.Vue 这类 MVVM 的前端框架之前,无法抛弃 Jquery 的重 ...
- 老司机带路:《axios从入门到开车 嘀嘀~~》
前言:axios vue.axios 跨域.axios.js.axios get.axios post.axios中文文档 之前当vue更新到2.0之后,作者就宣告不再对vue-resource更新, ...
- vue结合axios使用入门
Vue官方推荐的网络通信库不再是vue-resource了,推荐使用axios axios安装 npm: $ npm install axios bower: $ bower install axio ...
- vue入门:axios的应用及拦截封装
一.概述 在vue2.0项目中,我们主要使用axios进行http请求. axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 特征: 1.从浏览器中创建X ...
- vue入门(二) 让axios发送表单形式数据
(一) 使用 axios vue-axios qs 1.qs是必不可少的插件 npm install --save axios vue-axios qs 2.安装完成后,在main.js插入以下代码 ...
- [Vue 牛刀小试]:第十五章 - 传统开发模式下的 axios 使用入门
一.前言 在没有接触 React.Angular.Vue 这类 MVVM 的前端框架之前,无法抛弃 Jquery 的重要理由,除了优秀的前端 DOM 元素操作性以外,能够非常便捷的发起 http 请求 ...
- Vue入门(四)——Axios向SpringMVC传数据
在实际业务需求中,经常会出现前台传表单或者对象到后台,后台Handler接受并转换成对应的POJO以供业务代码使用 此时在SpringMVC框架中就要用到@RequestBody注解,该注解用于将请求 ...
随机推荐
- 【洛谷P2894】Hotel 线段树+二分查询
题目大意:给定一个长度为 N 的序列,每个点有两种状态 1/0,表示占有和空闲,现支持 first-fit 查询是否有一段连续的长度为 X 的空闲子序列和区间赋值操作. 题解:get到了线段树新技能. ...
- JavaWeb面试篇(7)
61,JDBC访问数据库的基本步骤是什么?1,加载驱动2,通过DriverManager对象获取连接对象Connection3,通过连接对象获取会话4,通过会话进行数据的增删改查,封装对象5,关闭资源 ...
- java-dockerfile
java环境dockefile FROM centos:7 MAINTAINER yon@taexa.com ENV JAVA_HOME /usr/local/jdk ENV JRE_HOME ${J ...
- C2MIF软件使用说明
1.右击---管理员身份运行 2.打开文件txt---搞定!
- UVa 122 Trees on the level (动态建树 && 层序遍历二叉树)
题意 :输入一棵二叉树,你的任务是按从上到下.从左到右的顺序输出各个结点的值.每个结 点都按照从根结点到它的移动序列给出(L表示左,R表示右).在输入中,每个结点的左 括号和右括号之间没有空格,相邻 ...
- TCP连接的11种状态,三次握手四次挥手原因
1).LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN. /* The socket is listening for incoming connections. 侦听来自 ...
- csc.exeCPU100%
可以通过nuget把Microsoft.CodeDom.Providers.DotNetCompilerPlatform和Microsoft.Net.Compilers这两个包卸载
- 在MyEclipse安装Spket插件,用于jQuery代码提示
Spket插件下载: https://pan.baidu.com/s/1sjz24NF 解压文件,然后将解压后的文件全部复制到MyEclipse安装目录下的dropins包中,重启MyEclipse. ...
- Zookeeper选举机制(转)
源:http://blog.csdn.net/tototuzuoquan/article/details/54426684 1.Zookeeper选举机制 Zookeeper虽然在配置文件中并没有指定 ...
- 数据库MySQL(课下作业,必做) 20175225
作业要求: 1.下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入world.sql,提交导入成功 ...