返回 Social Auto Upload
request.js
根目录 / sau_frontend / src / utils / request.js
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.msg || data.message || '请求失败')
38 return Promise.reject(new Error(data.msg || 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, onUploadProgress) {
91 return request.post(url, formData, {
92 headers: {
93 'Content-Type': 'multipart/form-data'
94 },
95 onUploadProgress
96 })
97 }
98 }
99
100 export default request
100 lines JAVASCRIPT