request.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // 此vm参数为页面的实例,可以通过它引用vuex中的变量
  2. import {
  3. mainUrl
  4. } from './baseUrl';
  5. module.exports = (vm) => {
  6. // 初始化请求配置
  7. uni.$u.http.setConfig((config) => {
  8. /* config 为默认全局配置*/
  9. config.baseURL = mainUrl //'http://t28.9026.com'; /* 根域名 */ //本地测试环境
  10. //config.baseURL = 'http://gift.cn'; /* 根域名 */ //演示测试环境
  11. //config.baseURL = 'http://gift.cn'; /* 根域名 */ //生成环境
  12. return config
  13. })
  14. // 请求拦截
  15. uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
  16. let token=uni.getStorageSync("token")
  17. config.header = {
  18. // ...config.header,
  19. // Authorization: `Bearer ${vm.$store.state.token}`
  20. Authorization: `Bearer ${token}`
  21. }
  22. return config
  23. }, config => { // 可使用async await 做异步操作
  24. return Promise.reject(config)
  25. })
  26. // 响应拦截
  27. uni.$u.http.interceptors.response.use((response) => {
  28. /* 对响应成功做点什么 可使用async await 做异步操作*/
  29. const data = response.data
  30. const header = response.header
  31. // if (header.token) {
  32. // vm.$store.commit('user/setToken', header.token)
  33. // }
  34. //
  35. // 自定义参数
  36. const custom = response.config?.custom
  37. if (data.code !== 200) {
  38. if (data.code == 400) {
  39. vm.$store.commit('setToken', null)
  40. return Promise.reject(data)
  41. }
  42. // 如果没有显式定义custom的toast参数为false的话,默认对报错进行toast弹出提示
  43. if (custom.toast !== false) {
  44. //uni.$u.toast(data.message)
  45. }
  46. return Promise.reject(data)
  47. // 如果需要catch返回,则进行reject
  48. if (custom?.catch) {
  49. return Promise.reject(data)
  50. } else {
  51. // 否则返回一个pending中的promise,请求不会进入catch中
  52. return new Promise(() => {})
  53. }
  54. }
  55. return data.data === undefined ? {} : data.data
  56. }, (response) => {
  57. // 对响应错误做点什么 (statusCode !== 200)
  58. return Promise.reject(response)
  59. })
  60. }