27js基礎,資料型別轉換
阿新 • • 發佈:2022-04-10
create例項,呼叫get或post方法,可通過interceptor設定對請求和響應的過濾
適用於小專案:
import axios from 'axios' // 丟擲錯誤 function errorLog(err) { const err = new Error(msg); throw err; } //固定的URL let serverURL = 'https://www.lxq/request' // 建立一個 axios 例項 const service = axios.create({ baseURL: serverURL, timeout: 300000 // 請求超時時間 }); service.interceptors.request.use( config => { if (config.headers.pageType && config.headers.pageType === 'upload') { config.baseURL = 'https://www.ll./office/' return config } return config }, error => { console.log(error); Promise.reject(error) } ); // 響應攔截器 service.interceptors.response.use( response => { if (response.config.headers.RequestName) { return response; } // 狀態碼與後臺約定 const dataAxios = response.data; const { code } = dataAxios; // 根據 code 進行判斷 if (code === undefined) { return dataAxios } else { switch (code) { case 0: // [ 示例 ] code === 0 代表沒有錯誤 return dataAxios.data; case '1': // return dataAxios; default: if (!dataAxios.message) { errorCreat(`${dataAxios.msg}`) } else { errorCreat(`${dataAxios.message}`) } break } } }, error => { if (error && error.response) { switch (error.response.status) { case 400: error.message = '請求錯誤'; break; case 401: error.message = '未授權,請登入'; break; case 403: error.message = '拒絕訪問'; break; case 404: error.message = `404`; 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: break } } return Promise.reject(error) } ); export default service