request.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import Vue from 'vue'
  2. import axios from 'axios'
  3. import { Promise } from "core-js"
  4. import adapter from 'axios-miniprogram-adapter'
  5. import {Notify} from '../wxcomponents/dist/notify/notify'
  6. // 设置基地址
  7. const request = axios.create({
  8. // 运行到浏览器时,把这一行注释回来,VUE_APP_BASE_API是在vue.config.js中配置的,官网有
  9. // baseURL: process.env.VUE_APP_BASE_API,
  10. // 运行到浏览器时下面一行注释掉
  11. baseURL: 'http://shop-api.edu.koobietech.com',
  12. // 在微信开发者工具环境中,axios,http是发不出去的,没有跨域,vue.config.js文件也是无效的
  13. // 基于axios-miniprogram-adapter包给axios中添加一个适配器
  14. // 运行到浏览器时,下面一行注释掉,axios时可以在浏览器中正常使用的,不需要适配器
  15. adapter: adapter,
  16. })
  17. axios.defaults.adapter = function(config) {
  18. return new Promise((resolve, reject) => {
  19. console.log(config)
  20. var settle = require('axios/lib/core/settle');
  21. var buildURL = require('axios/lib/helpers/buildURL');
  22. uni.request({
  23. method: config.method.toUpperCase(),
  24. url: config.baseURL + buildURL(config.url, config.params, config.paramsSerializer),
  25. header: config.headers,
  26. data: config.data,
  27. dataType: config.dataType,
  28. responseType: config.responseType,
  29. sslVerify: config.sslVerify,
  30. complete: function complete(response) {
  31. response = {
  32. data: response.data,
  33. status: response.statusCode,
  34. errMsg: response.errMsg,
  35. header: response.header,
  36. config: config
  37. }
  38. settle(resolve, reject, response);
  39. }
  40. })
  41. })
  42. }
  43. // request拦截器,在请求之前做一些处理
  44. request.interceptors.request.use(
  45. config => {
  46. const token = uni.setStorageSync("token")
  47. console.log(config, '请求拦截成功')
  48. return config;
  49. },
  50. error => {
  51. return Promise.reject(error);
  52. }
  53. );
  54. //配置成功后的拦截器
  55. request.interceptors.response.use(res => {
  56. const data = res.data;
  57. if (data.code == "00000") {
  58. return data.data
  59. }
  60. if (data.code === "A00004") {
  61. Notify('请登录后操作!')
  62. uni.navigateTo({
  63. url:"/pages/login/login"
  64. })
  65. return Promise.reject("当前页面需要登录!")
  66. }
  67. Notify(data.msg)
  68. return Promise.reject(data.msg)
  69. }, error => {
  70. return Promise.reject(error)
  71. })
  72. export default request