08.axios封装
1.初始化vue项目
vue init webpack deaxios # 使用脚手架创建项目cd deaxios # 进入项目npm install axios --save # 安装axios
2.封装axios
2.1 src文件夹下新建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://192.168.56.100:8888'; // vue请求后端地址axios.defaults.timeout = 10000; // 多久超时axios.defaults.withCredentials = true; // 跨域访问需要发送cookie时一定要加/* * 设置请求传递数据的格式(看服务器要求的格式) * x-www-form-urlencoded * 默认提交表单 * 把数据对象序列化成表单数据*/// axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';// axios.defaults.transformRequest = data => qs.stringify(data);axios.defaults.headers['Content-Type'] = 'application/json'; // 设置默认提交jsonaxios.defaults.transformRequest = data => JSON.stringify(data); // 把数据对象序列化成json字符串// 第二步:对请求拦截器和响应拦截器进行封装/* * 请求拦截器:发送请求前需要调用这个函数 1.当没有登录时,直接跳转到登录页 2.请求发送前把token获取,设置到header中*/axios.interceptors.request.user(config => {// 从localStorage中获取tokenlet token = localStorage.getItem('token')// 如果有token,就把token设置到请求头中Authorization字段中token && (config.headers.Authorization = token);retu config;},error => {retu Promise.reject(error);});/* * 响应拦截器:当后端返回数据给vue时会调用这个函数 1. 每次返回403错误时,跳转到login*/axios.interceptors.response.use(response => {// 当响应码是2xx的情况,进入这里debuggerretu response.data;}, error => {// 当响应码不是2xx的情况,进入这里debuggerretu 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方法:对应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 scr/http目录下创建apis.js文件,用来写接口地址列表
/* eslint-disable */// 接口信息,生成请求方法// 引入get方法,post方法import { get,post } from './index'// 用户登陆export const login = (params, headers) => post("/user/login/", params, headers)
作者:远山渡月
来源链接:https://www.cnblogs.com/fiee/p/13749474.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。