国外MOSE官网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
2.3 KiB

  1. import config from "@/config";
  2. export default function request ( {
  3. url = '',
  4. method = 'GET',
  5. data = {},
  6. showLoading = false,
  7. header = {}
  8. } ) {
  9. // console.log('我是request的参数', url, method, data, showLoading, header);
  10. if (showLoading) uni.showLoading({title: '加载中'})
  11. const token = uni.getStorageSync('token')
  12. if (token) {
  13. header['X-Access-Token'] = token
  14. }
  15. return new Promise((resolve, reject) => {
  16. uni.request({
  17. url: config.baseURL + url,
  18. method,
  19. data,
  20. header: {
  21. 'Content-Type': 'application/x-www-form-urlencoded',
  22. ...header
  23. },
  24. success: (res) => {
  25. console.log(`Success ${method} ${url}`, res);
  26. // 处理HTTP状态码错误
  27. if (res.statusCode !== 200){
  28. const error = {
  29. code: res.statusCode,
  30. message: '网络请求错误'
  31. }
  32. switch (res.statusCode) {
  33. case 401:
  34. case 403:
  35. uni.removeStorageSync('token')
  36. uni.reLaunch({ url: '/subPages/login/login' })
  37. error.message = '登录已过期,请重新登录'
  38. break;
  39. case 404:
  40. error.message = '资源不存在'
  41. break;
  42. case 500:
  43. error.message = '服务器错误'
  44. }
  45. uni.showToast({
  46. title: error.message,
  47. icon: 'none'
  48. })
  49. reject(error)
  50. return
  51. }
  52. if (res.data.code === 200 && res.data.result !== null) {
  53. resolve(res.data) // 成功返回数据
  54. } else {
  55. const errorMsg = res.data.message || '请求失败'
  56. uni.showToast({
  57. title: errorMsg,
  58. icon: 'none'
  59. })
  60. reject({
  61. code: res.data.code,
  62. message: errorMsg,
  63. data: res.data
  64. })
  65. }
  66. },
  67. fail: (err) => {
  68. console.log(`Fail ${method} ${url}`, err);
  69. const errorMsg = err.errMsg || '请求失败'
  70. uni.showToast({
  71. title: errorMsg,
  72. icon: 'none'
  73. })
  74. reject({
  75. code: -1,
  76. message: errorMsg,
  77. data: err
  78. })
  79. },
  80. complete: () => {
  81. if (showLoading) {
  82. uni.hideLoading()
  83. }
  84. }
  85. })
  86. })
  87. }