// 引用axios import axios from 'axios'; // qs类型转换 import qs from 'qs';
const http = axios.create(); //创建新的实例
// 接口请求:请求需要做的处理我们可以再此处里进行操作 http.interceptors.request.use((config) => { // 这一块是做了一个token自动拼接 因为有好多 我们看到的网页请求传值需要携带token 但是为了方便简洁 我们封装可以把token直接封装到外边 config.params = { ...config.params, token: '1ec949s15fb709370a', };
// 这里判断处理的接口请求值的类型直接转换 (适用于字符串类型请求值接口) if (typeof config.data === 'object' && !(config.data instanceof FormData)) { config.data = qs.stringify(config.data); } return config; });
// 接口响应:请求需要做的处理我们可以再此处里进行操作 http.interceptors.response.use( (response) => { // 这里做了一个脱壳处理,方便大家后期获取res里不需要再res.data.data这种两级操作获取值了 加大代码开发的效率 const { data } = response; return data; }, (error) => { // 这里是重中之重的环节 // 公司中又好多适合于做处理提醒都在这里进行报错提醒 // 加大了引用用户的需求 适用于页面的良好渲染 有助于更好的用户体验 // 例如 超时处理 请求接口错误提醒... 服务器请求错误提醒等等等等 return Promise.reject(error); }, );
// 最后一定注意抛出对象 export default http;