From 3c25c2a5177be5c11d250861c4c64ca2676700a3 Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期二, 18 六月 2024 16:52:07 +0800
Subject: [PATCH] feat:请求封装

---
 .env.development          |    1 
 src/api/index.js          |   75 +++++++++++++++++++++++++++++++++++++
 src/api/modules/user.js   |    6 +++
 src/views/login/index.vue |   11 +++++
 .env.production           |    1 
 5 files changed, 94 insertions(+), 0 deletions(-)

diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..33da7b4
--- /dev/null
+++ b/.env.development
@@ -0,0 +1 @@
+VITE_BASE_API_URL = '';
\ No newline at end of file
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000..33da7b4
--- /dev/null
+++ b/.env.production
@@ -0,0 +1 @@
+VITE_BASE_API_URL = '';
\ No newline at end of file
diff --git a/src/api/index.js b/src/api/index.js
index e69de29..d2351d2 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -0,0 +1,75 @@
+import axios from "axios";
+import { useRoute } from "vue-router";
+const route = useRoute();
+axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
+
+const service = axios.create({
+  baseURL: import.meta.env.VITE_BASE_API_URL,
+  timeout: 15000,
+});
+
+/**
+ * 鑷畾涔夌姸鎬佺爜澶勭悊
+ * @param {*} status 鐘舵�佺爜
+ * @param {*} info 淇℃伅
+ */
+const errorHandle = (status, info) => {
+  switch (status) {
+    case 400:
+      console.log("璇箟鏈夎");
+      break;
+    case 401:
+      console.log("鏈嶅姟鍣ㄨ璇佸け璐�");
+      route.replace('/login');
+      break;
+    case 403:
+      console.log("鏈嶅姟鍣ㄦ嫆缁濊闂�");
+      route.replace('/login');
+      break;
+    case 404:
+      console.log("鍦板潃閿欒");
+      break;
+    case 500:
+      console.log("鏈嶅姟鍣ㄩ亣鍒版剰澶�");
+      break;
+    case 502:
+      console.log("鏈嶅姟鍣ㄦ棤鍝嶅簲");
+      break;
+    default:
+      console.log(info);
+      break;
+  }
+};
+
+
+// request鎷︽埅鍣�
+service.interceptors.request.use(
+  (config) => {
+    
+    // const token = localStorage.getItem('authToken');
+    // if (token) {
+    //     config.headers['Authorization'] = `Bearer ${token}`;
+    // }
+
+    return config;
+  },
+  (error) => {
+    // 杩斿洖Promise.reject(error)锛岃繖鏍蜂細瑙﹀彂鍚庣画鐨勯敊璇鐞嗗櫒
+    Promise.reject(error);
+  },
+);
+
+// response鎷︽埅鍣�
+service.interceptors.response.use(
+  (res) => {
+    if (response.status === 200 && response.data.code === 200) return Promise.resolve(response.data);
+    else return Promise.reject(response.data);
+  },
+  (error) => {
+    const { response } = error;
+    errorHandle(response.status, response.info);
+    return Promise.reject(error);
+  },
+);
+
+export default service;
diff --git a/src/api/modules/user.js b/src/api/modules/user.js
new file mode 100644
index 0000000..4d8fcb3
--- /dev/null
+++ b/src/api/modules/user.js
@@ -0,0 +1,6 @@
+import service from "@/api";
+
+
+export const login = (postData = {}) => {
+  return service.post('/api/user/login', postData);
+}
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 2fbd6d0..c11c07c 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -39,6 +39,8 @@
 <script setup>
 import { ref, reactive, onMounted, nextTick } from 'vue';
 import { useRouter } from 'vue-router';
+import { login } from '@/api/modules/user.js';
+
 
 const router = useRouter();
 
@@ -106,6 +108,15 @@
   loginFormRef.value.validate((valid) => {
     if (valid) {
       router.push('/index');
+      return;
+      loading.value = true;
+      login({}).then(res => {
+        console.log(res);
+        loading.value = false;
+      }).catch(err => {
+        console.log(err);
+        loading.value = false;
+      });
     }
   });
 };

--
Gitblit v1.8.0