vue 中axios
阿新 • • 發佈:2020-12-28
import axios from "axios"; import { Message } from "element-ui"; import router from "../router/index"; const NODE_ENV = process.env.NODE_ENV; let http = axios.create({ baseURL: NODE_ENV === "development" ? "/api(開發環境)" : "正式環境後臺地址", // 開發環境/正式環境(打包後) withCredentials: true, headers: {"Content-Type": "application/json", "Token": '' }, }); function apiAxios(method, url, params, response) { http({ method: method, url: url, data: method === "POST" || method === "PUT" ? params : null, params: method === "GET" || method === "DELETE" ? params : null, }).then(function (res) { response(res); }).catch(function (err) { response(err); }) } // 新增請求攔截器 http.interceptors.request.use(function (config) { const token = localStorage.getItem("token") || ""; config.headers['Token'] = token; return config; }, function (error) {return Promise.reject(error); }); // 新增響應攔截器 http.interceptors.response.use(function (response) { return response; }, function (error) { if(error.response.data.message == "token資訊失效") { Message({ showClose: true, message: "身份資訊失效,請重新登入!", type: "warning" }); setTimeout(function(){
// 清除token 跳轉登入頁 localStorage.removeItem("token"); router.push({ path: "/" }) },2000); } return Promise.reject(error); });
export default { get: function (url, params, response) { return apiAxios("GET", url, params, response) }, post: function (url, params, response) { return apiAxios("POST", url, params, response) }, put: function (url, params, response) { return apiAxios("PUT", url, params, response) }, delete: function (url, params, response) { return apiAxios("DELETE", url, params, response) } }