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注解,该注解用于将请求 ...
随机推荐
- 【HDU4276】The Ghost Blows Light
题目大意:给定一棵有根树,1 号节点为根节点,点有点权,边有边权,初始给定一个价值,每经过一条边都会减少该价值,每经过一个点都会增加相应的答案贡献值,求如何在给定价值的情况下最大化答案贡献,并要求最后 ...
- SpringMVC POJO入参过程分析
SpringMVC确定目标方法POJO类型的入参过程 1.确认一个key: (1).若目标方法的POJO类型的参数没有使用@ModelAttribute作为修饰,则key为POJO类名第一个字母的小写 ...
- ZROI 19.08.03 DP入门
\(n\)个点,要求连一棵树,设点\(i\)的度数为\(d_i\),则其贡献为\(f(d_i)\mod 59393\),其中\(f(x)\)是一个\(k\)次多项式.最大化总贡献.\(n\leq 30 ...
- HDU-4292-Food(最大流,Dinic)
链接: https://vjudge.net/problem/HDU-4292 题意: You, a part-time dining service worker in your college's ...
- 输出到Excel
HSSFWorkbook oBook = new HSSFWorkbook(); NPOI.SS.UserModel.ISheet oSheet = oBook.CreateSheet(); #reg ...
- Linux基础教程 linux系统中的批量删除文件与空文件删除的命令介绍
linux下面删除文件或者目录命令rm(remove): 兄弟连Linux培训 功能说明:删除文件或目录. 语 法:rm[-dfirv][--help][--version][文件或目录...] 补充 ...
- 记ubuntu sudo无法使用,su密码不对的解决办法
前言 因为我有强制关机的习惯, 然后就杯具了.. ubuntu版本是 16.04 sudo没法使用, su密码不对, 顿时我就慌了 解决方案 1.1.开机点击ESC,进去GUN GRUB界面 1.2. ...
- 【CF1252L】Road Construction(基环树,最大流)
题意:给定一张n点n边无重边自环的无向图,刚开始每条边都没有被选择,每条边上有一个颜色集合,必须从中选择一种 有K个工人,每个工人有颜色a[i],需要把工人分配到与其颜色相同的边上 问是否能有一种使得 ...
- Spring Data Jpa (二)JPA基础查询
介绍Spring Data Common里面的公用基本方法 (1)Spring Data Common的Repository Repository位于Spring Data Common的lib里面, ...
- sqli-libs(7)
导出文件GET字符型注入 0x01介绍 导出到文件就是可以将查询结果导出到一个文件中,如常见的将一句话木马导出到一个php文件中,sqlmap中也有导出一句话和一个文件上传的页面 常用的语句是: s ...