httpParamsFormatting.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import axios from 'axios'
  2. import { Loading, Message } from 'element-ui'
  3. export default function axiosFormatting (customConfig) {
  4. const httpConfig = {
  5. timeout: 1000 * 30,
  6. baseURL: '',
  7. headers: {
  8. ...customConfig.headers
  9. }
  10. }
  11. // let loadingInstance = null // 加载全局的loading
  12. const instance = axios.create(httpConfig)
  13. /** 添加请求拦截器 **/
  14. instance.interceptors.request.use(config => {
  15. /**
  16. * 在这里:可以根据业务需求可以在发送请求之前做些什么。
  17. * config.headers['token'] = sessionStorage.getItem('token') || ''
  18. */
  19. // 执行请求脚本
  20. eval(customConfig.requestScript)
  21. return config
  22. }, error => {
  23. // 对请求错误做些什么
  24. return Promise.reject(error)
  25. })
  26. /** 添加响应拦截器 **/
  27. instance.interceptors.response.use(response => {
  28. if (response.data.code === 200) {
  29. // 执行响应脚本
  30. const data = response.data.data
  31. eval(customConfig.responseScript)
  32. return Promise.resolve(data)
  33. } else {
  34. Message({
  35. message: response.data.message,
  36. type: 'error'
  37. })
  38. return Promise.reject(response.data.message)
  39. }
  40. })
  41. return new Promise((resolve, reject) => {
  42. instance({
  43. method: customConfig.method,
  44. url: customConfig.url,
  45. params: customConfig.params,
  46. data: customConfig.method === 'post' ? customConfig.body : undefined
  47. }).then(response => {
  48. resolve(response)
  49. }).catch(error => {
  50. reject(error)
  51. })
  52. })
  53. }