request.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const axios = window.axios;
  2. const baseURL = "http://chip.hdlkeji.com";
  3. // 创建axios实例
  4. const instance = axios.create({
  5. baseURL, // api的base_url
  6. });
  7. // request拦截器
  8. instance.interceptors.request.use(
  9. (config) => {
  10. return config;
  11. },
  12. (error) => {
  13. // Do something with request error
  14. console.log(error); // for debug
  15. Promise.reject(error);
  16. }
  17. );
  18. // respone拦截器
  19. instance.interceptors.response.use(
  20. // response => response,
  21. /**
  22. * 下面的注释为通过response自定义code来标示请求状态,当code返回如下情况为权限有问题,登出并返回到登录页
  23. * 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中
  24. */
  25. (response) => {
  26. const res = response.data;
  27. // 处理异常的情况
  28. if (res.code !== 1) {
  29. return Promise.reject("error");
  30. } else {
  31. // 默认只返回data,不返回状态码和message
  32. // 通过 meta 中的 responseAll 配置来取决后台是否返回所有数据(包括状态码,message和data)
  33. const isbackAll =
  34. response.config.meta && response.config.meta.responseAll;
  35. if (isbackAll) {
  36. return res;
  37. } else {
  38. return res.data;
  39. }
  40. }
  41. },
  42. (error) => {
  43. console.log("err" + error); // for debug
  44. return Promise.reject(error);
  45. }
  46. );
  47. export default {
  48. get: (url, params, config) => instance.get(url, { params, ...config }),
  49. post: (url, params, config) => instance.post(url, params, config),
  50. baseURL,
  51. };