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