Sin Descripción

request.js 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import axios from 'axios'
  2. import qs from 'qs'
  3. import { comUrl } from '@/utils/index'
  4. // 创建axios实例
  5. const service = axios.create({
  6. baseURL: comUrl, // api的base_url
  7. // timeout: 5000, // 请求超时时间
  8. paramsSerializer: function(params) {
  9. return qs.stringify(params, { arrayFormat: 'repeat' })
  10. }
  11. })
  12. // request拦截器
  13. service.interceptors.request.use(config => {
  14. // 配置config
  15. config.headers.Accept = 'application/json'
  16. if (config.method === 'post') {
  17. config.data = qs.stringify(config.data, { arrayFormat: 'repeat' })
  18. // 处理后后台无需添加RequestBody
  19. config.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
  20. }
  21. if (localStorage.token) {
  22. config.headers.Authorization = localStorage.token
  23. }
  24. return config
  25. }, error => {
  26. Promise.reject(error)
  27. })
  28. // respone拦截器
  29. service.interceptors.response.use(response => {
  30. let data = response.data
  31. const status = response.status
  32. if (status === 200) {
  33. if (response.data === undefined) {
  34. // 解决IE9数据问题
  35. data = response.request.responseText
  36. } else {
  37. data = response.data
  38. }
  39. if (!(data instanceof Object)) {
  40. // 判断data不是Object时,解析成Object
  41. // data = JSON.parse(data)
  42. }
  43. return response.data
  44. } else {
  45. return Promise.resolve(response)
  46. }
  47. }, error => {
  48. return Promise.reject(error)
  49. })
  50. export default service