封装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),我们将第一时间核实后及时予以删除。