From 8dedf1b9c06db325ac2af809f296cbff0b9bd280 Mon Sep 17 00:00:00 2001 From: maochaoying <925670706@qq.com> Date: Mon, 28 Aug 2023 14:43:34 +0800 Subject: [PATCH] axios --- src/request/httpclient.js | 115 ---------------------------------------------- src/request/index.js | 115 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 115 deletions(-) delete mode 100755 src/request/httpclient.js create mode 100755 src/request/index.js diff --git a/src/request/httpclient.js b/src/request/httpclient.js deleted file mode 100755 index ef49311..0000000 --- a/src/request/httpclient.js +++ /dev/null @@ -1,115 +0,0 @@ -/* eslint-disable no-unused-expressions */ -import axios from 'axios' -import React from 'react' -import { message } from 'antd' -import ClientError from './clientError' - -/** - * 0:成功 - * 1:系统内部错误 - * 2:session过期,跳转登陆界面 - */ -axios.defaults.headers['Cache-Control'] = - 'no-store,no-cache,no-transform,must-revalidate,max-age=0' -class BaseHttpClient { - constructor() {} - - baseUrl = '' - - loged = 1 - - instance = axios.create({ - baseURL: this.baseUrl, - timeout: 20000, - withCredentials: true, - }) - - getCommon(method, url, params = {}, headers = {}) { - this.url = url - return this.instance[method](url, { params, ...headers }) - .then(this.handleSuccessResponse.bind(this)) - .catch(this.handleErrorResponse.bind(this)) - .finally(() => {}) - } - - postCommon(method, url, data = {}, header) { - return this.instance[method](url, data, header) - .then(this.handleSuccessResponse.bind(this)) - .catch(this.handleErrorResponse.bind(this)) - .finally(() => {}) - } - - get(url, params = {}, headers = {}) { - return this.getCommon('get', url, params, headers) - } - - delete(url, params = {}, header) { - return this.getCommon('delete', url, params, header) - } - - post(url, data = {}, header) { - return this.postCommon('post', url, data, header) - } - - put(url, data = {}, header) { - return this.postCommon('put', url, data, header) - } - - handleSuccessResponse(res) { - if (res) { - if (res && res.data.result_code === 0) { - return res.data - } - } - return null - } - - handleErrorResponse(err) { - // console.log(err.response, 92) - if (err.toString().indexOf('Network Error') >= 0) { - message.destroy() - message.error('网络连接错误') - return - } - if ([101002, 101003].includes(err?.response?.data?.result_code)) { - message.destroy() - message.error('用户登录已过期') - // window.location.href = '/login'; - return - } - if (err?.response?.data?.result_code && err?.response?.data?.message) { - message.destroy() - message.error(err.response.data.message) - } else if (err) { - throw err - } else { - throw new ClientError(999, '未知错误') - } - } -} - -// 带有拦截器的HttpClient -class HttpClientWithInterceptors extends BaseHttpClient { - constructor() { - super() - this.instance.interceptors.response.use( - response => - // 在这里添加响应的拦截 - response, - error => { - const originalRequest = error.config - if ( - error.code === 'ECONNABORTED' && - error.message.indexOf('timeout') !== -1 && - !originalRequest._retry - ) { - message.error('查询超时,请稍后重试') - } - }, - ) - } -} - -class HttpClientClass extends HttpClientWithInterceptors {} - -export const HttpClient = new HttpClientClass() diff --git a/src/request/index.js b/src/request/index.js new file mode 100755 index 0000000..ef49311 --- /dev/null +++ b/src/request/index.js @@ -0,0 +1,115 @@ +/* eslint-disable no-unused-expressions */ +import axios from 'axios' +import React from 'react' +import { message } from 'antd' +import ClientError from './clientError' + +/** + * 0:成功 + * 1:系统内部错误 + * 2:session过期,跳转登陆界面 + */ +axios.defaults.headers['Cache-Control'] = + 'no-store,no-cache,no-transform,must-revalidate,max-age=0' +class BaseHttpClient { + constructor() {} + + baseUrl = '' + + loged = 1 + + instance = axios.create({ + baseURL: this.baseUrl, + timeout: 20000, + withCredentials: true, + }) + + getCommon(method, url, params = {}, headers = {}) { + this.url = url + return this.instance[method](url, { params, ...headers }) + .then(this.handleSuccessResponse.bind(this)) + .catch(this.handleErrorResponse.bind(this)) + .finally(() => {}) + } + + postCommon(method, url, data = {}, header) { + return this.instance[method](url, data, header) + .then(this.handleSuccessResponse.bind(this)) + .catch(this.handleErrorResponse.bind(this)) + .finally(() => {}) + } + + get(url, params = {}, headers = {}) { + return this.getCommon('get', url, params, headers) + } + + delete(url, params = {}, header) { + return this.getCommon('delete', url, params, header) + } + + post(url, data = {}, header) { + return this.postCommon('post', url, data, header) + } + + put(url, data = {}, header) { + return this.postCommon('put', url, data, header) + } + + handleSuccessResponse(res) { + if (res) { + if (res && res.data.result_code === 0) { + return res.data + } + } + return null + } + + handleErrorResponse(err) { + // console.log(err.response, 92) + if (err.toString().indexOf('Network Error') >= 0) { + message.destroy() + message.error('网络连接错误') + return + } + if ([101002, 101003].includes(err?.response?.data?.result_code)) { + message.destroy() + message.error('用户登录已过期') + // window.location.href = '/login'; + return + } + if (err?.response?.data?.result_code && err?.response?.data?.message) { + message.destroy() + message.error(err.response.data.message) + } else if (err) { + throw err + } else { + throw new ClientError(999, '未知错误') + } + } +} + +// 带有拦截器的HttpClient +class HttpClientWithInterceptors extends BaseHttpClient { + constructor() { + super() + this.instance.interceptors.response.use( + response => + // 在这里添加响应的拦截 + response, + error => { + const originalRequest = error.config + if ( + error.code === 'ECONNABORTED' && + error.message.indexOf('timeout') !== -1 && + !originalRequest._retry + ) { + message.error('查询超时,请稍后重试') + } + }, + ) + } +} + +class HttpClientClass extends HttpClientWithInterceptors {} + +export const HttpClient = new HttpClientClass()