request.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 {Toast} from '../wxcomponents/dist/toast/toast'
  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 == "A00001") {
  61. uni.showToast({
  62. title:"帐户密码不正确"
  63. })
  64. // Toast.fail('帐户密码不正确')
  65. }
  66. if (data.code === "A00004") {
  67. // Toast.fail('请登录后操作!')
  68. uni.showToast({
  69. title:"请登录后操作"
  70. })
  71. uni.navigateTo({
  72. url:"/pages/login/login"
  73. })
  74. return Promise.reject("当前页面需要登录!")
  75. }
  76. // Toast(data.msg)
  77. uni.showToast({
  78. title:data.msg
  79. })
  80. return Promise.reject(data.msg)
  81. }, error => {
  82. return Promise.reject(error)
  83. })
  84. export default request;