/**** request.js ****/ // 导入axios import axios from "axios" // 使用element-ui Message做消息提醒 import { Message } from "element-ui" import baseURL from "@/utils/baseApi" import { goTologin } from "@/utils/common.js" //1. 创建新的axios实例, axios.defaults.withCredentials = true axios.defaults.emulateJSON = true // 好几个接口 baseURL = { // forum: "https://forum.gter.net", forum: "https://app.gter.net/forum", offer: "https://offer.gter.net", tenement: "https://app.gter.net", } const service = axios.create({ baseURL: baseURL.forum, timeout: 15000, }) // 2.请求拦截器 service.interceptors.request.use( config => { //发请求前做的一些处理,数据转化,配置请求头,设置token,设置loading等,根据需求去添加 //注意使用token的时候需要引入cookie方法或者用本地localStorage等方法,推荐js-cookie // config['headers']['authorization'] = "qj2q1qk1on0curclipghjtv5ja1g9eq2" // config['headers']['authorization'] = "661aiz52k5e6vqgmkxnz0wvbv8nciz8h" // if (process.env.NODE_ENV == "development") config['headers']['authorization'] = "0h870ovk2xckoqfsh8a3t3sg4sg5z7eg" if (process.env.NODE_ENV == "development") config["headers"]["authorization"] = "5f8215f2105d8b2162d0cc210cdbf1a3" return config }, error => { Promise.reject(error) } ) // 3.响应拦截器 service.interceptors.response.use( response => { //接收到响应数据并成功后的一些共有的处理,关闭loading等 let data = response.data if (data.code == 401) return goTologin() if (data.code == 201 && response["config"]["ispop"] == true) Message.error(data.message) return data }, error => { /***** 接收到异常响应的处理开始 *****/ if (error && error.response) { // 1.公共错误处理 // 2.根据响应码具体处理 switch (error.response.status) { case 400: error.message = "错误请求" break case 401: error.message = "未授权,请重新登录" break case 403: error.message = "拒绝访问" break case 404: error.message = "请求错误,未找到该资源" break case 405: error.message = "请求方法未允许" break case 408: error.message = "请求超时" break case 500: error.message = "服务器端出错" break case 501: error.message = "网络未实现" break case 502: error.message = "网络错误" break case 503: error.message = "服务不可用" break case 504: error.message = "网络超时" break case 505: error.message = "http版本不支持该请求" break default: error.message = `连接错误${error.response.status}` } } else { // 超时处理 if (JSON.stringify(error).includes("timeout")) error.message = "服务器响应超时,请刷新当前页" error.message = "连接服务器失败" } Message.error(error.message) /***** 处理结束 *****/ //如果不需要错误处理,以上的处理过程都可省略 return Promise.resolve(error.response) } ) const http = { /** * methods: 请求 * @param url 请求地址 * @param params 请求参数 * @param baseURLName 域名名称 不传为论坛 * @param ispop 报错是否需要弹窗 */ get(url, params, baseURLName, ispop = true) { const str = window.location.hostname let hash = 0 for (let i = 0; i < str.length; i++) { const char = str.charCodeAt(i) hash = (hash << 5) - hash + char hash |= 0 } const strr = (hash >>> 0).toString(16) const config = { method: "get", url, baseURL: baseURL[baseURLName], } params = Object.assign({}, params, { key: strr }) if (params) config.params = params return service(config) }, post(url, params, baseURLName, ispop = true) { const config = { method: "post", url: url, baseURL: baseURL[baseURLName], } if (params) config.data = params config["ispop"] = ispop return service(config) }, } // 导出 export default http