axios.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. // 引入axios
  2. import BASE from '@tools/base'
  3. import store from '@store/index'
  4. import axios from 'axios'
  5. import { Message } from 'element-ui';
  6. // 创建axios实例
  7. const httpService = axios.create({
  8. withCredentials: false, // 允许携带cookie
  9. baseURL: process.env.VUE_APP_API_URL || '/api/',
  10. timeout: 23000, // 请求超时时间 - 3s
  11. // transformRequest: [
  12. // // `transformRequest` 允许在向服务器发送前,修改请求数据
  13. // // 只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法
  14. // // 后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 Stream
  15. // data => {
  16. // var fData = new FormData();
  17. // for(let key in data){
  18. // fData.append(key, data[key]);
  19. // }
  20. // return fData
  21. // }
  22. // ],
  23. //修改请求头信息
  24. headers: {
  25. 'Content-Type': 'application/x-www-form-urlencoded',
  26. // 'Access-Control-Allow-Origin':'*'
  27. // 'Content-Type': 'multipart/form-data'
  28. // 'Content-Type': 'application/json;charset=UTF-8'
  29. },
  30. });
  31. const httpService_L = axios.create({
  32. withCredentials: false, // 允许携带cookie
  33. baseURL: process.env.VUE_APP_API_URL || '/api/',
  34. timeout: 210000, // 请求超时时间 - 3s
  35. headers: {
  36. 'Content-Type': 'application/x-www-form-urlencoded',
  37. },
  38. });
  39. // httpService.defaults.withCredentials = true; // 表示跨域请求时是否需要使用凭证
  40. // http request 拦截器
  41. httpService.interceptors.request.use(
  42. config => {
  43. return config;
  44. },
  45. err => {
  46. return Promise.reject(err);
  47. }
  48. );
  49. //长时间相应拦截器
  50. httpService_L.interceptors.response.use(
  51. response => {
  52. const {
  53. data
  54. } = response;
  55. if(data.code === 200){
  56. }
  57. else{
  58. // let rqData = JSON.parse(response.config.data); // 请求数据
  59. // console.error(BASE.getNowTime(), rqData.interfaceid+":"+data.message)
  60. Message.warning(data.message);
  61. store.commit('loadingStore', false); // 全局的数据 加载中.... - 开关
  62. store.commit('openSubmitDDTag', false); // 防抖动 - 开关
  63. }
  64. return data; // 响应正确的数据
  65. }, error => {
  66. // 响应错误数据(错误情况分无token信息,错误码)
  67. const {
  68. response
  69. } = error;
  70. if (response) {
  71. switch (error.response.status) {
  72. case 400:
  73. error.message = '错误请求';
  74. break;
  75. case 401:
  76. error.message = '未授权,请重新登录';
  77. break;
  78. case 403:
  79. error.message = '拒绝访问';
  80. break;
  81. case 404:
  82. error.message = '请求错误,未找到该资源';
  83. break;
  84. case 405:
  85. error.message = '请求方法未允许';
  86. break;
  87. case 408:
  88. error.message = '请求超时';
  89. break;
  90. case 500:
  91. error.message = '服务器端出错';
  92. break;
  93. case 501:
  94. error.message = '网络未实现';
  95. break;
  96. case 502:
  97. error.message = '网络错误';
  98. break;
  99. case 503:
  100. error.message = '服务不可用';
  101. break;
  102. case 504:
  103. error.message = '网络超时';
  104. break;
  105. case 505:
  106. error.message = 'http版本不支持该请求';
  107. break;
  108. default:
  109. error.message = `未知错误${error.response.status}`;
  110. }
  111. } else {
  112. error.message = "请求超时";
  113. }
  114. store.commit('loadingStore', false); // 全局的数据 加载中... - 开关
  115. store.commit('openSubmitDDTag', false); // 防抖动 - 开关
  116. console.error(BASE.getBzDate(new Date().getTime(), 0, "datetime"), error.message)
  117. Message.error(error.message + ",请稍候重试!");
  118. }
  119. );
  120. // respone拦截器
  121. httpService.interceptors.response.use(
  122. response => {
  123. const {
  124. data
  125. } = response;
  126. if(data.code === 200){
  127. }
  128. else{
  129. // let rqData = JSON.parse(response.config.data); // 请求数据
  130. // console.error(BASE.getNowTime(), rqData.interfaceid+":"+data.message)
  131. Message.warning(data.message);
  132. store.commit('loadingStore', false); // 全局的数据 加载中.... - 开关
  133. store.commit('openSubmitDDTag', false); // 防抖动 - 开关
  134. }
  135. return data; // 响应正确的数据
  136. }, error => {
  137. // 响应错误数据(错误情况分无token信息,错误码)
  138. const {
  139. response
  140. } = error;
  141. if (response) {
  142. switch (error.response.status) {
  143. case 400:
  144. error.message = '错误请求';
  145. break;
  146. case 401:
  147. error.message = '未授权,请重新登录';
  148. break;
  149. case 403:
  150. error.message = '拒绝访问';
  151. break;
  152. case 404:
  153. error.message = '请求错误,未找到该资源';
  154. break;
  155. case 405:
  156. error.message = '请求方法未允许';
  157. break;
  158. case 408:
  159. error.message = '请求超时';
  160. break;
  161. case 500:
  162. error.message = '服务器端出错';
  163. break;
  164. case 501:
  165. error.message = '网络未实现';
  166. break;
  167. case 502:
  168. error.message = '网络错误';
  169. break;
  170. case 503:
  171. error.message = '服务不可用';
  172. break;
  173. case 504:
  174. error.message = '网络超时';
  175. break;
  176. case 505:
  177. error.message = 'http版本不支持该请求';
  178. break;
  179. default:
  180. error.message = `未知错误${error.response.status}`;
  181. }
  182. } else {
  183. error.message = "请求超时";
  184. }
  185. store.commit('loadingStore', false); // 全局的数据 加载中... - 开关
  186. store.commit('openSubmitDDTag', false); // 防抖动 - 开关
  187. console.error(BASE.getBzDate(new Date().getTime(), 0, "datetime"), error.message)
  188. Message.error(error.message + ",请稍候重试!");
  189. }
  190. );
  191. /*
  192. * get请求
  193. * url: 接口地址
  194. * params: 参数,格式如下
  195. * */
  196. export function get(url, params = {}) {
  197. return new Promise((resolve, reject) => {
  198. httpService({
  199. url: url,
  200. method: 'get',
  201. params: params,
  202. }).then(response => {
  203. resolve(response);
  204. }).catch(error => {
  205. reject(error);
  206. });
  207. });
  208. }
  209. /*
  210. * post请求
  211. * url: 接口地址
  212. * params: 参数,格式如下
  213. * */
  214. export function post(url, params = {}) {
  215. return new Promise((resolve, reject) => {
  216. httpService({
  217. url: url,
  218. method: 'post',
  219. data: params,
  220. }).then(response => {
  221. resolve(response);
  222. }).catch(error => {
  223. reject(error);
  224. });
  225. });
  226. }
  227. /*
  228. * get请求 长时间
  229. * url: 接口地址
  230. * params: 参数,格式如下
  231. * */
  232. export function get_L(url, params = {}) {
  233. return new Promise((resolve, reject) => {
  234. httpService_L({
  235. url: url,
  236. method: 'get',
  237. params: params,
  238. }).then(response => {
  239. resolve(response);
  240. }).catch(error => {
  241. reject(error);
  242. });
  243. });
  244. }
  245. /*
  246. * post请求 长时间
  247. * url: 接口地址
  248. * params: 参数,格式如下
  249. * */
  250. export function post_L(url, params = {}) {
  251. return new Promise((resolve, reject) => {
  252. httpService_L({
  253. url: url,
  254. method: 'post',
  255. data: params,
  256. }).then(response => {
  257. resolve(response);
  258. }).catch(error => {
  259. reject(error);
  260. });
  261. });
  262. }
  263. /*
  264. * post请求 - 超过5s使用的方法
  265. * url: 接口地址
  266. * params: 参数,格式如下
  267. * */
  268. export function postL(url, params = {}) {
  269. return new Promise((resolve, reject) => {
  270. axios.create({
  271. withCredentials: false, // 允许携带cookie
  272. baseURL: process.env.VUE_APP_API_URL || '/api/',
  273. timeout: 210000, // 请求超时时间 - 60s
  274. //修改请求头信息
  275. headers: {
  276. 'Content-Type': 'application/x-www-form-urlencoded'
  277. },
  278. })({
  279. url: url,
  280. method: 'post',
  281. data: params,
  282. }).then(response => {
  283. resolve(response);
  284. }).catch(error => {
  285. reject(error);
  286. });
  287. });
  288. }
  289. export default {
  290. get,
  291. get_L,
  292. post,
  293. post_L,
  294. postL,
  295. }