当前位置: 首页 >前端技术 > 封装axios请求&添加拦截器

封装axios请求&添加拦截器

1.初始vue项目

vue init webpack deaxios  # 使用脚手架创建项目 deaxios(项目名)cd deaxios# 进入项目npm install axios -S  # 安装axiso

2.封装axios

2.1src文件夹下新建http文件夹,用来放网络请求相关的文件

2.2 src/http文件夹下,创建index.js文件,对axios进行封装

/* eslint-disable */// 第一步:实例化axios对象,并设置 1.请求地址;2、超时时间;3、设置请求头数据格式const axios = require('axios')  // 创建axios对象// import qs from 'qs'axios.defaults.baseURL = "http://xxx.xxx.xx.xx:xxxx";// vue请求后端地址axios.defaults.timeout = 10000;// 设置超时axios.defaults.withCredentials = true;// 跨域访问需要发送cookie时一定要加axios.defaults.withCredentials = true/** 设置请求传递数据的格式(查看服务器要求的格式)* x-www-form-urlencoded* 默认提交表单* 把数据对象序列化成表单数据*/// axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';// axios.defaults.transformRequest = data => qs.stringify(data);/*** 设置默认提交json* 把数据对象序列化成json字符串*/axios.defaults.headers['Content-Type'] = 'application/json';  // 设置默认提交jsonaxios.defaults.transformRequest = data => JSON.stringify(data);  // 把数据对象序列化成json字符串// 第二步:对请求拦截器,和响应拦截器进行封装/*** 请求拦截器:发送请求前需要调用这个函数1.当没有登录时,直接跳转到登录页2.请求发送前把token获取,设置到header中*/axios.interceptors.request.use(config => {// 从localStorage中获取tokenlet token = localStorage.getItem('token');retu config;},error => {retu Promise.reject(error)});/*** 响应拦截器:当后端返回数据给vue时会调用这个函数1.没次返回403错误时,跳转到login*/axios.interceptors.response.use(response => {// 当响应码是 2xx 的情况, 进入这里debuggerretu response.data;}, error => {	// 当响应码不是 2xx 的情况, 进入这里	retu error});// 第三步:使用上面的axios对象,对get请求和post请求进行封装/*** get方法,对应get请求* @param {String} url [请求的url地址]* @param {Object} params [请求时携带的参数]*/export function get(url, params, headers){retu new Promise((resolve, reject) => {axios.get(url, {params, headers}).then(res=>{resolve(res.data.ResultObj)}).catch(err => {reject(err.data)})})}/*** post方法* @ param {String} url [请求的url地址]* @ param {Object} params [请求时携带的参数]**/export function post(url, params, headers) {retu new Promise((resolve, reject) => {axios.post(url, params, headers).then((res) => {resolve(res.data)}).catch((err) => {reject(err.data)})})}export default axios; // 一定要导出函数

2.3 src/http目录下创建apis.js文件,用来写接口地址列表

/* exlint-disable */// 接口信息, 生成请求方法// 引入get方法,post方法import { get, post } from './index'// 用户登录export const login = (params, headers) => post("/user/login/", params, headers)

作者:Harry·F
来源链接:https://www.cnblogs.com/hr20-04-19/p/13749536.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/front/112662.html

标签:Axios
分享给朋友:

“封装axios请求&添加拦截器” 的相关文章

JSP经典回顾 2022年05月31日 22:35:30
html5 video 视频标签详解 2022年06月06日 21:50:21
标签添加不可用属性 2022年06月07日 23:36:34
HTML Label标签使用 2022年06月08日 12:08:12
HTML隐藏属性的使用 2022年06月08日 16:38:28
HTML列表标签与表格标签 2022年06月08日 19:45:03
HTML5中的自定义属性总结 2022年06月11日 14:05:05
html5的input类型和所有属性详解 2022年06月11日 20:30:15