vue项目调用后端接口,有写好的万能的二次封装axios文件吗
import axios from "axios";
import { Message } from "element-ui";
// import store from "@/store/store";
import { getToken } from "@/utils/auth";
// import router from "@/router";
// 创建
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
// withCredentials: true, // 跨域请求时发送cookie
timeout: 60000, // 毫秒
});
//请求拦截器
service.interceptors.request.use(
(config) => {
// 发送请求前
if (getToken() ) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
return config;
},
(error) => {
// 发送请求后
console.log(error); // for debug
return Promise.reject(error);
}
);
// 响应拦截器
service.interceptors.response.use(
/**
* If you want to get http information such as headers or status
* Please return response => response
*/
/**
* Determine the request status by custom code
* Here is just an example
* You can also judge the status by HTTP Status Code
*/
(response) => {
const res = response.data;
// if the custom code is not 20000, it is judged as an error.
if (res.code !== 200) {
Message({
message: res.msg || "Error",
type: "error",
duration: 5 * 1000,
});
return Promise.reject(new Error(res.message || "Error"));
} else {
return res.data;
}
},
(error) => {
console.log("err" + error); // for debug
Message({
showClose: true,
message: error.message,
type: "error",
duration: 5 * 1000,
});
return Promise.reject(error);
}
);
export default service;
import Cookies from "js-cookie";
const SettingPageKey = "Admin-Setting-Page";
const TokenKey = m-Token";
const IdKey = "m-Id";
const userIdKey = "m-userId";
// const userNameKey = "m-userName";
// const shopNameKey = "m-shopName";
const UserInfoKey = "Admin-User-Info";
export function getToken() {
return Cookies.get(TokenKey);
}
export function setToken(token) {
return Cookies.set(TokenKey, token);
}
export function removeToken() {
return Cookies.remove(TokenKey);
}
export function getId() {
return Cookies.get(IdKey);
}
export function setId(Id) {
return Cookies.set(IdKey, Id);
}
export function removeId() {
return Cookies.remove(IdKey);
}
export function getuserId() {
return Cookies.get(userIdKey);
}
export function setuserId(userId) {
return Cookies.set(userIdKey,userId);
}
export function removeuserId() {
return Cookies.remove(userIdKey);
}
// export function getshopName() {
// return Cookies.get(shopNameKey);
// }
// export function setshopName(shopName) {
// return Cookies.set(shopNameKey,shopName);
// }
// export function removeshopName() {
// return Cookies.remove(shopNameKey);
// }
// export function getuserName() {
// return Cookies.get(userNameKey);
// }
// export function setuserName(userName) {
// return Cookies.set(userNameKey,userName);
// }
// export function removeuserName() {
// return Cookies.remove(userNameKey);
// }
export function getSettingPageFlag() {
return Cookies.get(SettingPageKey);
}
export function setSettingPageFlag(flag) {
return Cookies.set(SettingPageKey, flag);
}
export function removeSettingPageFlag() {
return Cookies.remove(SettingPageKey);
}
export function getUserInfo() {
return JSON.parse(Cookies.get(UserInfoKey));
}
export function setUserInfo(info) {
return Cookies.set(UserInfoKey, JSON.stringify(info));
}
export function removeUserInfo() {
return Cookies.remove(UserInfoKey);
}
// url参数解析
export function getUrlkey(url, OneKey, Delete_key = []) {
if (!url) url = window.location.href;
if (!url.includes("?")) {
if (OneKey === "token") {
return null;
}
return {};
}
var url_l = url.split("?")[1];
var url_ll = url_l.split("&"),
obj = {};
var fullUrl = window.location.href;
let beginIndex = fullUrl.lastIndexOf("/") + 1;
let endIndex = fullUrl.lastIndexOf("?");
obj.uid = fullUrl.slice(beginIndex, endIndex);
url_ll.forEach((item) => {
var key = item.split("=")[0];
var val = item.split("=")[1];
if (Delete_key.indexOf(key) == -1) obj[key] = val;
});
if (OneKey && url_l.indexOf(OneKey) != -1) return obj[OneKey];
return obj;
}
这个是我自己写的
这中常见的功能,网上一大堆哦:https://blog.csdn.net/Vivien_CC/article/details/127507545