request.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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 = 'https://peihu.songlanyun.com/prod-api/api'
  17. // config.baseURL = 'https://wrj.songlanyun.com/prod-api/api'; /* 根域名 */
  18. return config
  19. })
  20. // 请求拦截
  21. uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
  22. // 初始化请求拦截器时,会执行此方法,此时data为undefined,赋予默认{}
  23. config.data = config.data || {}
  24. config.header.apiToken = storage.get('apiToken') //生成环境
  25. return config
  26. }, config => { // 可使用async await 做异步操作
  27. return Promise.reject(config)
  28. })
  29. // 响应拦截
  30. uni.$u.http.interceptors.response.use((response) => {
  31. /* 对响应成功做点什么 可使用async await 做异步操作*/
  32. const data = response.data
  33. // 自定义参数
  34. const custom = response.config?.custom
  35. if (data.code !== 200) {
  36. if (needLoginList.includes(data.code)) { // 未注册用户
  37. // 判断登录接口不需要跳转
  38. if (response.config.url == '/miniapp/user/user/authorization/login') {
  39. return data
  40. } else {
  41. uni.$u.toast('请登录!');
  42. setTimeout(() => {
  43. uni.navigateTo({
  44. url: '/pages/login/index',
  45. });
  46. }, 1000)
  47. return Promise.reject(data)
  48. }
  49. }
  50. // 如果没有显式定义custom的toast参数为false的话,默认对报错进行toast弹出提示
  51. if (custom.toast !== false) {
  52. uni.$u.toast(data.msg);
  53. if (backCodeList.includes(data.code)) { //返回码为backCodeList中的值,则返回上一页
  54. setTimeout(() => {
  55. uni.navigateBack();
  56. }, 1000)
  57. }
  58. return Promise.reject(data)
  59. }
  60. if (data.code == 401) {
  61. setTimeout(() => {
  62. uni.navigateTo({
  63. url: '/pages/login/index',
  64. });
  65. }, 500)
  66. }
  67. // 如果需要catch返回,则进行reject
  68. if (custom?.catch) {
  69. return Promise.reject(data)
  70. } else {
  71. // 否则返回一个pending中的promise,请求不会进入catch中
  72. return new Promise(() => { })
  73. }
  74. }
  75. // return data.data === undefined ? {} : data
  76. return data
  77. }, (response) => {
  78. // 对响应错误做点什么 (statusCode !== 200)
  79. return Promise.reject(response)
  80. })
  81. }