http.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. import axios from 'axios'
  2. import store from '@/store'
  3. import router from '@/router'
  4. import { getToken } from '@/utils/auth'
  5. export const baseURL = process.env.VUE_APP_BASE_API
  6. //console.log('---CONFIG---', process.env)
  7. // 设置接口响应时间
  8. axios.defaults.timeout = 60000
  9. axios.defaults.baseURL = baseURL + process.env.VUE_APP_API_PREFIX
  10. // request interceptor
  11. axios.interceptors.request.use(
  12. config => {
  13. // do something before request is sent
  14. if (store.getters.token) {
  15. // let each request carry token
  16. // ['X-Token'] is a custom headers key
  17. // please modify it according to the actual situation
  18. config.headers['accessToken'] = getToken()
  19. }
  20. console.log("======= request config ========= ", config)
  21. return config
  22. },
  23. error => {
  24. // do something with request error
  25. console.log(error) // for debug
  26. return Promise.reject(error)
  27. }
  28. )
  29. // response interceptor
  30. axios.interceptors.response.use(res => {
  31. console.log("========== response =========> ", res)
  32. if (res.data instanceof Blob) {
  33. return res
  34. }
  35. if (res.data.success) {
  36. return res;
  37. } else {
  38. if (res.data.code == "402") { //Token过期,需要登录
  39. const path = router.currentRoute.fullPath
  40. //console.log('lougout+path', path);
  41. if (path.indexOf('/login') == -1) {
  42. store.dispatch("user/logout").then(res => {
  43. router.push({ path: "/login?redirect=" + path});
  44. })
  45. }
  46. }
  47. if (res.data.msg) {
  48. return Promise.reject(res.data.msg)
  49. } else {
  50. return Promise.reject(new Error(res.msg || 'Error'))
  51. }
  52. }
  53. }, error => {
  54. console.log('http-err', error) // for debug
  55. return Promise.reject(error)
  56. }
  57. )
  58. /**
  59. * get 请求方法
  60. * @param url
  61. * @param params
  62. * @returns {Promise}
  63. */
  64. export function get(url, params = {}) {
  65. return new Promise((resolve, reject) => {
  66. axios.get(url, {
  67. params: params
  68. }).then(response => {
  69. resolve(response.data)
  70. }, err => {
  71. reject(err)
  72. }).catch(err => {
  73. reject(err)
  74. })
  75. })
  76. }
  77. /**
  78. * post 请求方法
  79. * @param url
  80. * @param data
  81. * @returns {Promise}
  82. */
  83. export function post(url, data = {}) {
  84. return new Promise((resolve, reject) => {
  85. axios.post(url, data)
  86. .then(response => {
  87. resolve(response.data)
  88. }, err => {
  89. reject(err)
  90. }).catch(err => {
  91. reject(err)
  92. })
  93. })
  94. }
  95. /**
  96. * put 请求方法
  97. * @param url
  98. * @param data
  99. * @returns {Promise}
  100. */
  101. export function put(url, data = {}) {
  102. return new Promise((resolve, reject) => {
  103. axios.put(url, data)
  104. .then(response => {
  105. resolve(response.data)
  106. }, err => {
  107. reject(err)
  108. }).catch(err => {
  109. reject(err)
  110. })
  111. })
  112. }
  113. /**
  114. * delete 请求方法
  115. * @param url
  116. * @param data
  117. * @returns {Promise}
  118. */
  119. export function del(url, data = {}) {
  120. return new Promise((resolve, reject) => {
  121. axios.delete(url, data)
  122. .then(response => {
  123. resolve(response.data)
  124. }, err => {
  125. reject(err)
  126. }).catch(err => {
  127. reject(err)
  128. })
  129. })
  130. }
  131. export function upload(url, data, header = {}) {
  132. return new Promise((resolve, reject) => {
  133. axios.post(url, data, {
  134. headers: {
  135. 'Accept': 'application/json',
  136. 'Content-Type': 'multipart/form-data',
  137. ...header
  138. }
  139. }).then(response => {
  140. resolve(response.data);
  141. }, err => {
  142. reject(err);
  143. }).catch(err => {
  144. reject(err);
  145. });
  146. })
  147. }
  148. /**
  149. * put 文件流下载封装
  150. * @param url
  151. * @param data
  152. * @returns {Promise}
  153. */
  154. export function download(url, data = {}) {
  155. return new Promise((resolve, reject) => {
  156. axios({
  157. method: 'post',
  158. url: url,
  159. data: data,
  160. responseType: 'blob'
  161. }).then(response => {
  162. resolve(response.data)
  163. },
  164. err => {
  165. reject(err)
  166. }
  167. )
  168. })
  169. }