service.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import axios from 'axios';
  2. import adapter from "axios-miniprogram-adapter";
  3. // 创建axios实例
  4. const request = axios.create({
  5. // #ifdef H5
  6. // baseURL: "/devHost",
  7. baseURL: "http://127.0.0.1:30001",
  8. // #endif
  9. // #ifdef APP-PLUS
  10. // baseURL: 'https://www.b-beng.com',
  11. adapter: adapter,
  12. // #endif
  13. // #ifdef MP-WEIXIN
  14. adapter: adapter,
  15. // #endif
  16. });
  17. // 解决UNI-app上adapter is not a function问题
  18. // axios.defaults.adapter = function (config) {
  19. // return new Promise((resolve, reject) => {
  20. // console.log(config)
  21. // var settle = require('axios/lib/core/settle');
  22. // var buildURL = require('axios/lib/helpers/buildURL');
  23. // uni.request({
  24. // method: config.method.toUpperCase(),
  25. // url: config.baseURL + buildURL(config.url, config.params, config.paramsSerializer),
  26. // header: config.headers,
  27. // data: config.data,
  28. // dataType: config.dataType,
  29. // responseType: config.responseType,
  30. // sslVerify: config.sslVerify,
  31. // complete: function complete(response) {
  32. // response = {
  33. // data: response.data,
  34. // status: response.statusCode,
  35. // errMsg: response.errMsg,
  36. // header: response.header,
  37. // config: config
  38. // };
  39. // settle(resolve, reject, response);
  40. // }
  41. // })
  42. // })
  43. // }
  44. // 请求拦截
  45. request.interceptors.request.use(
  46. config => {
  47. //授权登录接口返回
  48. let token = uni.getStorageSync("token");
  49. if (token) {
  50. config.headers['token'] = token;
  51. }
  52. return config;
  53. },
  54. error => {
  55. return Promise.reject(error)
  56. }
  57. )
  58. request.interceptors.response.use(res => {
  59. console.log("axios响应拦截器")
  60. // 未设置状态码则默认成功状态
  61. const code = res.data.code
  62. // 获取错误信息
  63. const msg = res.data.msg
  64. // 二进制数据则直接返回
  65. // if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
  66. // return res.data
  67. // }
  68. if (code === 0) {
  69. return res.data
  70. } else {
  71. if (code === 102) {
  72. uni.clearStorageSync();
  73. uni.reLaunch({
  74. url: "/pages/login/login",
  75. });
  76. }
  77. if (code != 3402) {
  78. uni.showToast({
  79. title: msg,
  80. icon: "none",
  81. });
  82. }
  83. return Promise.reject('error');
  84. }
  85. },
  86. error => {
  87. console.log('err' + error)
  88. let {
  89. message
  90. } = error
  91. if (message == 'Network Error') {
  92. message = '后端接口连接异常'
  93. } else if (message.includes('timeout')) {
  94. message = '系统接口请求超时'
  95. } else if (message.includes('Request failed with status code')) {
  96. message = '系统接口' + message.substr(message.length - 3) + '异常'
  97. }
  98. uni.showToast({
  99. title: message,
  100. icon: "none",
  101. });
  102. return Promise.reject(error)
  103. }
  104. )
  105. // 把对象暴露出去
  106. export default request