axios是目前主流的ajax封装库之一,可以很方便我们请求数据;
支持的功能:
从浏览器发出 XMLHttpRequests请求。
从 node.js 发出 http 请求。
支持 Promise API。
能拦截请求和响应。
能转换请求和响应数据。
取消请求。
实现JSON数据的自动转换。
客户端支持防止 XSRF攻击。
/* 对axios进行二次封装 */
import axios from 'axios'
//引入进度条
import nProgress from 'nprogress';
//引入进度条样式
import 'nprogress/nprogress.css'
console.log(nProgress);
const instance = axios.create({
/* 配置对象 */
/* 配置基础路径,发送请求的时候,路径会直接出现api不需要在配置api */
baseURL: '/api',
/* 配置相应事件 */
timeout:5000
})
/* 配置请求拦截器,在发送请求之前,请求拦截器可以监测到,做出一些事情 */
instance.interceptors.request.use((config) => {
// console.log("请求拦截:" + config);
//请求开始的时候,进度条开始启动
nProgress.start();
return config;
}, (error) => {
return Promise.reject(error)
});
instance.interceptors.response.use((res) => {
/* 服务器响应成功的的回调函数*/
// console.log("响应拦截" + res);
//响应的时候,进度条结束
nProgress.done();
return res.data
}, (error) => {
/* 响应失败的回调函数 */
return Promise.reject(error)
});
/* 对外暴露axios实例对象instance */
export default instance;
/* 当前这个模块,API统一管理 */
//引入封装的axios
import instance from "./request";
/* 三级联动接口 */
//请求接口:/api/product/getBaseCategoryList
//请求方法:get
//请求参数:无
export const reqCategoryList = () => {
return instance({
url: '/product/getBaseCategoryList',
method: 'get'
}) ;
}
/* vuex模块化输出 ,每一个模块都自己建立小仓库*/
import {reqCategoryList} from '@/api'
const actions = {
/* 通过封装的请求数据方法请求数据 */
async categoryList({commit}) {
let res = await reqCategoryList();
console.log(res);
if (res.code == 200) {
commit("CATEGORYLIST",res.data)
}
}
};
const mutations = {
CATEGORYLIST(state, value) {
state.categoryList = value
}
};
const getters = {};
const state = {
categoryList : []
};
export default {
actions,
mutations,
getters,
state
}