axios简单封装使用
使用
import request from "./request";
export function postRequest(url, data) {
return request("http://www.baidu.com", { search: "baidu" }, "POST", {
headers: { "Content-Type": "application/x-www-form-urlencoded" },
});
}
export function getRequest(url, data) {
return request("http://www.baidu.com", { search: "baidu" });
}
封装代码
import axios from "axios";
import { showMessage } from "./status";
const env = import.meta.env;
axios.defaults.timeout = 60000;
axios.defaults.baseURL = "";
const { MODE } = env;
if (MODE == "development") {
axios.defaults.baseURL = "/api";
} else if (MODE == "production") {
axios.defaults.baseURL = "http://xxx.com:2086/";
}
axios.interceptors.request.use(
(config) => {
Object.assign(
config.headers,
{
"Content-Type": "application/json;charset=UTF-8",
},
config.headers
);
return config;
},
(error) => {
return Promise.reject(error);
}
);
axios.interceptors.response.use(
(response) => {
return response.data;
},
(error) => {
const { response } = error;
if (response) {
showMessage(response.status);
return Promise.reject(response.data);
} else {
}
}
);
export default function request(url = "", params = {}, type = "GET", config = {}) {
return new Promise((resolve, reject) => {
let promise;
const handleMap = new Map([
["GET", () => axios({ url, params, ...config })],
['POST', () => axios({method: "POST",url,data: params,...config,})]
]);
const handleFn = handleMap.get(type.toUpperCase());
promise = handleFn? handleFn(): Promise.reject(`未定义 ${type.toUpperCase()} 请求方式的处理函数`)
promise
.then((res) => {
resolve(res);
})
.catch((err) => {
reject(err);
});
});
}