request.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import axios from 'axios'
  2. import router from '../router'
  3. const host = window.location.host
  4. const domain = host.substring(0, host.indexOf('.')) || host.substring(0, host.indexOf(':'))
  5. const request = axios.create({
  6. withCredentials: true,
  7. baseURL: process.env.API_DOMAIN,
  8. timeout: 50000,
  9. headers: {
  10. 'Content-Type': 'application/json;charset=UTF-8'
  11. }
  12. })
  13. // Add a request interceptor
  14. request.interceptors.request.use(request => {
  15. const requestUrl = request.url
  16. // Do something before request is sent
  17. request.url = requestUrl + (requestUrl.indexOf('?') > -1 ? '&' : '?') + 'next=' + encodeURIComponent(location.href)
  18. // 因为微信开发者工具重复授权,本地开发时写死
  19. if (/^(0|192|10|localhost)|(test$)/.test(domain)) {
  20. request.url += '&pro=tuotuo'
  21. }
  22. return request
  23. }, error => {
  24. // Do something with request error
  25. return Promise.reject(error)
  26. })
  27. // Add a response interceptor
  28. request.interceptors.response.use(response => {
  29. // Do something with response data
  30. const { code, authorizeUrl } = response.data
  31. if (code === 301 && authorizeUrl) {
  32. location.replace(authorizeUrl)
  33. } else if (code === 403 && router.currentRoute.name !== 'partnerLogin') {
  34. router.push('/partner/login')
  35. }
  36. return response.data
  37. }, (error) => {
  38. // Do something with response error
  39. return Promise.reject(error)
  40. })
  41. export default request