//api.js
const API_LIST = {
login: {
baseURL: "/contactList",
method: "get"
},
register: {
baseURL: "/contact/new/json",
method: "post"
},
getuserlist: {
baseURL: "/getuserlist",
method: "get"
}
}
export default API_LIST
//service.js
import axios from 'axios'
// 引入vant轻提示组件
import { Toast } from 'vant'
// post请求中参数序列化
import qs from 'qs'
// 引入配置文件
import API_LIST from './api';
const instance = axios.create({
// 默认url
baseURL: "http://localhost:9000/api",
// 超时时间
timeout: 1000
})
const HTTP = {};
// 用来存放封装的http请求
for (const key in API_LIST) {
let api = API_LIST[key];
/**
* @param {Object} params :参数
* @param {Object} config :需要修改的默认配置
*
*/
HTTP[key] = async function (params, config = {}) {
let response = {};
if (api.method === "post") {
// 对post请求的参数进行序列化
let newParams = qs.stringify(params);
try {
response = await instance[api.method](api.baseURL, newParams, config)
} catch (error) {
response = error
}
} else if (api.method === "get") {
config.params = params;
try {
response = await instance[api.method](api.baseURL, config)
} catch (error) {
response = error
}
}
return response
}
}
// 请求拦截
instance.interceptors.request.use(config => {
// 请求发送成功之前
Toast.loading({
duration: 0,
message: "加载中..."
})
const token = sessionStorage.getItem("token");
// 添加token到headers
if (token) {
config.headers.token = token;
}
return config;
}, error => {
// 请求发送失败之后
Toast.clear();
Toast.fail("数据请求失败!请稍后重试");
return Promise.reject(error);
});
// 响应拦截
instance.interceptors.response.use(response => {
// 请求相应成功之后
Toast.clear();
return response.data;
}, error => {
// 请求相应失败之后
Toast.clear();
Toast.fail("服务器数错误!");
return Promise.reject(error);
});
export default HTTP
版权声明:本文为EWJRQKJRQ原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。