request.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. //使用方法
  2. // require("promise.prototype.finally").shim(); //使用时请引用finally
  3. // import {request} from '../../request/request'
  4. // request({
  5. // url: '/room/list',
  6. // }).then(res => {
  7. //
  8. // }).catch(err => {
  9. //
  10. // }).finally(() => {
  11. // Loading.close()
  12. // })
  13. //配置文件
  14. import axios from 'axios'
  15. export function request(config) {
  16. let baseURL;
  17. // uEnvDev;开发者模式,点击运行
  18. if (process.env.NODE_ENV === 'development') {
  19. //测试接口
  20. // baseURL = "http://192.168.137.1:9010"
  21. baseURL = "https://www.jingruntech.com/prod-api"
  22. }
  23. // uEnvProd;生产模式,点击发行
  24. if (process.env.NODE_ENV === 'production') {
  25. // baseURL = "http://192.168.137.1:9010"
  26. //正式接口
  27. baseURL = "https://www.jingruntech.com/prod-api"
  28. };
  29. let newVar = axios.create({
  30. baseURL: baseURL,
  31. timeout: 10000
  32. });
  33. // 请求拦截
  34. newVar.interceptors.request.use(
  35. request => {
  36. //配置基本信息
  37. // console.log(request)
  38. return request;
  39. }, err => {
  40. return Promise.reject(err);
  41. });
  42. // 响应拦截
  43. newVar.interceptors.response.use(function(response) {
  44. console.log(response)
  45. if (response.data.code == 401) {
  46. uni.showModal({
  47. title: '提示',
  48. content: '登录状态失效,点击确定重新登录',
  49. showCancel: false,
  50. success: function(res) {
  51. if (res.confirm) {
  52. axios.request({
  53. baseURL: baseURL,
  54. url: '/wechat/programLogin',
  55. method: 'POST',
  56. data: {
  57. phonenumber: uni.getStorageSync('cell_phone'),
  58. token: uni.getStorageSync('vuex_token'),
  59. usertype:'11'
  60. }
  61. }).then((res) => {
  62. uni.setStorage({
  63. key: 'vuex_token',
  64. data: res.data.data.token,
  65. success(es) {
  66. console.log("成功")
  67. }
  68. })
  69. let time = new Date(new Date().setDate(Date().getDate() + 6))
  70. uni.setStorage({
  71. key: 'effective_time',
  72. data: time.getTime(),
  73. success(res) {
  74. console.log("成功")
  75. }
  76. })
  77. uni.redirectTo({
  78. url: '/pages/home/index'
  79. });
  80. });
  81. } else if (res.cancel) {
  82. // console.log('用户点击取消');
  83. }
  84. }
  85. });
  86. return
  87. }
  88. // console.log('返回进入拦截成功')
  89. return Promise.resolve(response);
  90. }, function(error) {
  91. // console.log('返回进入拦截失败')
  92. return Promise.reject(error);
  93. });
  94. return newVar(config);
  95. }
  96. //在uni-app中使用对app有效果,h5不需要
  97. axios.defaults.adapter = function(config) {
  98. //token请求头
  99. if (uni.getStorageSync('vuex_token')) {
  100. config.headers.Authorization = "Bearer" + " " + uni.getStorageSync('vuex_token');
  101. }
  102. return new Promise((resolve, reject) => {
  103. var settle = require('axios/lib/core/settle');
  104. var buildURL = require('axios/lib/helpers/buildURL');
  105. uni.request({
  106. method: config.method.toUpperCase(),
  107. url: config.baseURL + buildURL(config.url, config.params, config.paramsSerializer),
  108. header: config.headers,
  109. data: config.data,
  110. dataType: config.dataType,
  111. responseType: config.responseType,
  112. sslVerify: config.sslVerify,
  113. complete: function complete(response) {
  114. response = {
  115. data: response.data,
  116. status: response.statusCode,
  117. errMsg: response.errMsg,
  118. header: response.header,
  119. config: config
  120. };
  121. settle(resolve, reject, response);
  122. }
  123. })
  124. })
  125. }