Files
hunli/vite-tailwindcss/src/api/wedding.js

86 lines
2.1 KiB
JavaScript
Raw Normal View History

2026-07-30 18:00:27 +08:00
import axios from 'axios'
// 婚礼纪业务 API统一走 /api 代理到 Go 后端 (:8080)
// 后端返回约定:{ code: 200, data, msg } 视为成功
const service = axios.create({
baseURL: '/api',
timeout: 15000,
})
// 请求拦截:受保护接口自动携带后台 token
service.interceptors.request.use((config) => {
const token = localStorage.getItem('admin_token')
if (token) {
config.headers = config.headers || {}
config.headers['Authorization'] = `Bearer ${token}`
}
return config
})
// 响应拦截:统一把 { code: 200, data } 形态解包
service.interceptors.response.use(
(response) => {
const body = response.data
// 后端标准包:{ code, data/msg/error }
if (body && typeof body === 'object' && 'code' in body) {
if (body.code === 200) return body
return Promise.reject(new Error(body.msg || body.error || '请求失败'))
}
// 没有 code 包裹(如 401 {error})视为失败
if (body && typeof body === 'object' && 'error' in body) {
return Promise.reject(new Error(body.error))
}
return body
},
(error) => {
const status = error?.response?.status
if (status === 401) {
localStorage.removeItem('admin_token')
localStorage.removeItem('admin_user')
}
return Promise.reject(error)
}
)
export function getConfig() {
return service.get('/config')
}
2026-08-01 12:36:58 +08:00
export function getAlbumImages() {
return service.get('/album')
}
2026-07-30 18:00:27 +08:00
export function saveConfig(payload) {
return service.post('/config', payload)
}
2026-07-31 13:09:49 +08:00
export function getUploadConfig() {
return service.get('/upload/config')
}
export function saveUploadConfig(payload) {
return service.post('/upload/config', payload)
}
2026-07-30 18:00:27 +08:00
export function uploadImage(file) {
const form = new FormData()
form.append('file', file)
return service.post('/upload', form, {
headers: { 'Content-Type': 'multipart/form-data' },
})
}
export function submitRsvp(form) {
return service.post('/rsvp', form)
}
export function getRsvpList() {
return service.get('/rsvp/list')
}
export function adminLogin(credentials) {
return service.post('/admin/login', credentials)
}
export default service