request.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import {
  2. storage,
  3. needLoginList,
  4. backCodeList
  5. } from "@/utils/tools.js"
  6. // 此vm参数为页面的实例,可以通过它引用vuex中的变量
  7. module.exports = (vm) => {
  8. // 初始化请求配置
  9. uni.$u.http.setConfig((config) => {
  10. // /* config 为默认全局配置*/
  11. // config.baseURL = 'http://192.168.0.70:8299/api'; /* 根域名 */
  12. // config.baseURL = 'http://192.168.0.17:8299/api'; /* 根域名 */
  13. // config.baseURL = 'http://192.168.0.151:8299/api'; /* 根域名 */
  14. // config.baseURL = 'https://bwshop.caiquanwang.com.cn/prod-api/api'
  15. // config.baseURL = 'http://192.168.0.70:8181/api'; //郭
  16. // config.baseURL = 'http://192.168.0.236:8181/api'; //白
  17. config.baseURL = 'https://peihu.songlanyun.com/prod-api/api'
  18. // config.baseURL = 'https://wrj.songlanyun.com/prod-api/api'; /* 根域名 */
  19. return config
  20. })
  21. // 请求拦截
  22. uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
  23. // 初始化请求拦截器时,会执行此方法,此时data为undefined,赋予默认{}
  24. config.data = config.data || {}
  25. config.header.apiToken = storage.get('apiToken') //生成环境
  26. return config
  27. }, config => { // 可使用async await 做异步操作
  28. return Promise.reject(config)
  29. })
  30. // 响应拦截
  31. uni.$u.http.interceptors.response.use((response) => {
  32. /* 对响应成功做点什么 可使用async await 做异步操作*/
  33. const data = response.data
  34. // 自定义参数
  35. const custom = response.config?.custom
  36. if (data.code !== 200) {
  37. if (needLoginList.includes(data.code)) { // 未注册用户
  38. // 判断登录接口不需要跳转
  39. if (response.config.url == '/miniapp/user/user/authorization/login') {
  40. return data
  41. } else {
  42. uni.$u.toast('请登录!');
  43. setTimeout(() => {
  44. uni.navigateTo({
  45. url: '/pages/login/index',
  46. });
  47. }, 1000)
  48. return Promise.reject(data)
  49. }
  50. }
  51. // 如果没有显式定义custom的toast参数为false的话,默认对报错进行toast弹出提示
  52. if (custom.toast !== false) {
  53. uni.$u.toast(data.msg);
  54. if (backCodeList.includes(data.code)) { //返回码为backCodeList中的值,则返回上一页
  55. setTimeout(() => {
  56. uni.navigateBack();
  57. }, 1000)
  58. }
  59. return Promise.reject(data)
  60. }
  61. if (data.code == 401) {
  62. setTimeout(() => {
  63. uni.navigateTo({
  64. url: '/pages/login/index',
  65. });
  66. }, 500)
  67. }
  68. // 如果需要catch返回,则进行reject
  69. if (custom?.catch) {
  70. return Promise.reject(data)
  71. } else {
  72. // 否则返回一个pending中的promise,请求不会进入catch中
  73. return new Promise(() => { })
  74. }
  75. }
  76. // return data.data === undefined ? {} : data
  77. return data
  78. }, (response) => {
  79. // 对响应错误做点什么 (statusCode !== 200)
  80. return Promise.reject(response)
  81. })
  82. }