Edan233 commited on
Commit
a9586da
·
1 Parent(s): e69b127

feat: 增加 request 请求封装

Browse files
Files changed (1) hide show
  1. sau_frontend/src/utils/request.js +99 -0
sau_frontend/src/utils/request.js ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import axios from 'axios'
2
+ import { ElMessage } from 'element-plus'
3
+
4
+ // 创建axios实例
5
+ const request = axios.create({
6
+ baseURL: import.meta.env.VITE_API_BASE_URL || 'http://localhost:5409',
7
+ headers: {
8
+ 'Content-Type': 'application/json'
9
+ }
10
+ })
11
+
12
+ // 请求拦截器
13
+ request.interceptors.request.use(
14
+ (config) => {
15
+ // 可以在这里添加token等认证信息
16
+ const token = localStorage.getItem('token')
17
+ if (token) {
18
+ config.headers.Authorization = `Bearer ${token}`
19
+ }
20
+ return config
21
+ },
22
+ (error) => {
23
+ console.error('请求错误:', error)
24
+ return Promise.reject(error)
25
+ }
26
+ )
27
+
28
+ // 响应拦截器
29
+ request.interceptors.response.use(
30
+ (response) => {
31
+ const { data } = response
32
+
33
+ // 根据后端接口规范处理响应
34
+ if (data.code === 200 || data.success) {
35
+ return data
36
+ } else {
37
+ ElMessage.error(data.message || '请求失败')
38
+ return Promise.reject(new Error(data.message || '请求失败'))
39
+ }
40
+ },
41
+ (error) => {
42
+ console.error('响应错误:', error)
43
+
44
+ // 处理HTTP错误状态码
45
+ if (error.response) {
46
+ const { status } = error.response
47
+ switch (status) {
48
+ case 401:
49
+ ElMessage.error('未授权,请重新登录')
50
+ // 可以在这里处理登录跳转
51
+ break
52
+ case 403:
53
+ ElMessage.error('拒绝访问')
54
+ break
55
+ case 404:
56
+ ElMessage.error('请求地址不存在')
57
+ break
58
+ case 500:
59
+ ElMessage.error('服务器内部错误')
60
+ break
61
+ default:
62
+ ElMessage.error('网络错误')
63
+ }
64
+ } else {
65
+ ElMessage.error('网络连接失败')
66
+ }
67
+
68
+ return Promise.reject(error)
69
+ }
70
+ )
71
+
72
+ // 封装常用的请求方法
73
+ export const http = {
74
+ get(url, params) {
75
+ return request.get(url, { params })
76
+ },
77
+
78
+ post(url, data, config = {}) {
79
+ return request.post(url, data, config)
80
+ },
81
+
82
+ put(url, data, config = {}) {
83
+ return request.put(url, data, config)
84
+ },
85
+
86
+ delete(url, params) {
87
+ return request.delete(url, { params })
88
+ },
89
+
90
+ upload(url, formData) {
91
+ return request.post(url, formData, {
92
+ headers: {
93
+ 'Content-Type': 'multipart/form-data'
94
+ }
95
+ })
96
+ }
97
+ }
98
+
99
+ export default request