axios.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. import Vue from 'vue';
  2. import axios from 'axios';
  3. import router from '@/router'
  4. axios.defaults.timeout = 65000;
  5. axios.defaults.baseURL = '';
  6. //http request 拦截器
  7. axios.interceptors.request.use(
  8. config => {
  9. console.log(config)
  10. // const token = getCookie('名称');注意使用的时候需要引入cookie方法,推荐js-cookie
  11. console.log(window.localStorage.getItem("token"))
  12. var userJson = window.localStorage.getItem("token")
  13. if(!userJson){
  14. var userData = false
  15. var token;
  16. }else{
  17. var userData = JSON.parse(userJson)
  18. var token;
  19. }
  20. if(userData && userData.access_token){
  21. token = userData.access_token
  22. }
  23. config.data = JSON.stringify(config.data)
  24. config.headers['Content-Type'] = 'application/json;charset=UTF-8'
  25. config.headers['Authorization'] = 'Basic c2FiZXI6c2FiZXJfc2VjcmV0'
  26. config.headers['Blade-Auth'] = token
  27. return config;
  28. },
  29. error => {
  30. return Promise.reject(err);
  31. }
  32. );
  33. //http response 拦截器
  34. axios.interceptors.response.use(
  35. response => {
  36. if (response.data.code == 1011008 || response.data.code == 1011006) {
  37. // Toast.fail('登录过期,跳原生')
  38. let userData
  39. var u = navigator.userAgent;
  40. var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
  41. var isiOS = u.indexOf('Mac OS X') > -1
  42. try{
  43. if(isAndroid){
  44. window.jsi.logout()
  45. }
  46. if(isiOS){
  47. }
  48. }catch(err){
  49. }
  50. }
  51. // if (response.data.code != 200) {
  52. // Toast.fail(response.data.message)
  53. // }
  54. switch (response.data.code) {
  55. case 32:
  56. response.msg = '请求错误(400)'
  57. break;
  58. }
  59. return response;
  60. },
  61. err => {
  62. console.log(err.response)
  63. if (err && err.response) {
  64. console.log(err.response)
  65. if(err.response.status == 500 || err.response.status == 503){
  66. Toast.fail('服务器错误')
  67. return
  68. }
  69. switch (err.response.data.code) {
  70. case 401:
  71. Toast.fail('登录已失效,请重新登录')
  72. router.push("/")
  73. break;
  74. case 403:
  75. err.message = '拒绝访问(403)';
  76. break;
  77. case 404:
  78. err.message = '请求出错(404)';
  79. break;
  80. case 408:
  81. err.message = '请求超时(408)';
  82. break;
  83. case 500:
  84. err.message = '服务器错误(500)';
  85. break;
  86. case 501:
  87. err.message = '服务未实现(501)';
  88. break;
  89. case 502:
  90. err.message = '网络错误(502)';
  91. break;
  92. case 503:
  93. err.message = '服务不可用(503)';
  94. break;
  95. case 504:
  96. err.message = '网络超时(504)';
  97. break;
  98. case 505:
  99. err.message = 'HTTP版本不受支持(505)';
  100. break;
  101. default:
  102. err.message = `${err.response.data.msg}`;
  103. }
  104. // if(err.response.status == 404){
  105. // router.push("/*")
  106. // }
  107. // if(err.response.status == 500 || err.response.status == 502){
  108. // router.push("/500")
  109. // }
  110. // if(err.response.status == 401){
  111. // router.push("/401")
  112. // }
  113. } else {
  114. err.message = '连接服务器失败!'
  115. }
  116. console.log(err.message)
  117. // Toast.fail(err.message)
  118. return Promise.reject(err);
  119. }
  120. )
  121. /**
  122. * 封装get方法
  123. * @param url
  124. * @param data
  125. * @returns {Promise}
  126. */
  127. export function get(url, params = {}) {
  128. return new Promise((resolve, reject) => {
  129. if(process.env.NODE_ENV == "development"){
  130. var getUrl = "http://" + window.location.host + "" + url
  131. }else{
  132. var getUrl = "https://" + window.location.host + "/api" + url
  133. }
  134. axios.get(getUrl, {params:params})
  135. .then(response => {
  136. setTimeout(() => {
  137. }, 500)
  138. resolve(response.data);
  139. }, err => {
  140. reject(err)
  141. })
  142. })
  143. }
  144. /**
  145. * 封装post请求
  146. * @param url
  147. * @param data
  148. * @returns {Promise}
  149. */
  150. export function post(url, data = {},params,headers) {
  151. return new Promise((resolve, reject) => {
  152. if(process.env.NODE_ENV == "development"){
  153. var postUrl = "http://" + window.location.host + url
  154. }else{
  155. var postUrl = "https://" + window.location.host +'/api' + url
  156. }
  157. axios.post(postUrl, data = {},{
  158. params:params,
  159. headers:headers || null
  160. })
  161. .then(response => {
  162. setTimeout(() => {
  163. }, 500)
  164. resolve(response.data);
  165. }, err => {
  166. reject(err)
  167. })
  168. })
  169. }
  170. export default {
  171. post,
  172. get
  173. }