request.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. // import md5 from 'md5'
  2. export function request(url, options = {}) {
  3. const config = useRuntimeConfig();
  4. const authStore = useAuthStore();
  5. const defatulOpts = {
  6. method: "get",
  7. baseURL: config.public.baseApi,
  8. headers: {
  9. ...options.headers,
  10. // "Content-Type": "application/json",
  11. // deviceType: config.public.deviceType,
  12. authorization: authStore.token,
  13. },
  14. onRequest({ options }) {
  15. if (options.method === "post") {
  16. }
  17. },
  18. onRequestError() {
  19. // showErrorMessage('请求出错,请重试~')
  20. },
  21. onResponse({ response: { _data: data } }) {
  22. if (data && data.errorCode != "NO-ERROR") {
  23. handleServerError(data.errorCode, data.errorMessage);
  24. }
  25. },
  26. onResponseError({ response }) {
  27. handleHttpError(response.status);
  28. },
  29. ...options,
  30. };
  31. return new Promise((resolve, reject) => {
  32. $fetch(url, defatulOpts)
  33. .then((res) => {
  34. const { errorCode } = res;
  35. errorCode === "NO-ERROR" ? resolve(res) : reject(res);
  36. })
  37. .catch((err) => reject(err));
  38. });
  39. }
  40. const handleHttpError = (status) => {
  41. showErrorMessage(`${status} 请求出错,请重试~`);
  42. // switch (status) {
  43. // case 400:
  44. // showErrorMessage("参数错误");
  45. // break;
  46. // case 401:
  47. // showErrorMessage("请求出错401");
  48. // break;
  49. // case 403:
  50. // showErrorMessage("服务器拒绝访问");
  51. // break;
  52. // case 404:
  53. // showErrorMessage("请求地址错误");
  54. // break;
  55. // case (502, 503):
  56. // showErrorMessage("系统升级中");
  57. // break;
  58. // default:
  59. // showErrorMessage("服务器出错了");
  60. // break;
  61. // }
  62. };
  63. const handleServerError = async (code, msg) => {
  64. if (code === "UNAUTHORIZED_LOGIN") {
  65. const authStore = useAuthStore();
  66. authStore.cleanToken();
  67. await navigateTo({
  68. path: "/login",
  69. replace: true,
  70. });
  71. return;
  72. }
  73. if (msg) {
  74. showErrorMessage(msg);
  75. }
  76. };
  77. const showErrorMessage = (msg) => {
  78. showToast(msg);
  79. // const { message } = createDiscreteApi(['message'])
  80. // if (process.server) return
  81. // const { message } = useMessage()
  82. // message.error(msg)
  83. };
  84. export const handleResponse = (response, isNeedData = true) => {
  85. return new Promise((resolve, reject) => {
  86. const success = response.success
  87. switch (success) {
  88. case true: {
  89. if (isNeedData) {
  90. if (response.data && !isEmptyValue(response.data)) return resolve()
  91. return reject(response)
  92. }
  93. return resolve()
  94. }
  95. default: {
  96. return reject(response)
  97. }
  98. }
  99. })
  100. }