request.js 2.9 KB

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