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