// API配置文件 - 统一管理所有API相关配置
|
export const API_CONFIG = {
|
// 基础URL配置
|
BASE_URL: '/api',
|
|
// GraphQL端点
|
GRAPHQL_ENDPOINT: '/api/graphql',
|
|
// 其他API端点
|
ENDPOINTS: {
|
MEDIA_UPLOAD: '/api/media/upload',
|
MEDIA_DOWNLOAD: '/api/media/download',
|
WECHAT_LOGIN: '/api/wechat/login',
|
WECHAT_PHONE: '/api/wechat/phone'
|
}
|
}
|
|
// GraphQL请求工具函数
|
export const graphqlRequest = async (query: string, variables: any = {}) => {
|
// 获取JWT token
|
const { getToken } = await import('@/utils/auth');
|
const token = getToken();
|
const headers: Record<string, string> = {
|
'Content-Type': 'application/json',
|
};
|
if (token) {
|
headers['Authorization'] = `Bearer ${token}`;
|
}
|
|
const response = await fetch(API_CONFIG.GRAPHQL_ENDPOINT, {
|
method: 'POST',
|
headers: headers,
|
body: JSON.stringify({
|
query,
|
variables,
|
}),
|
})
|
|
if (!response.ok) {
|
throw new Error(`HTTP error! status: ${response.status}`)
|
}
|
|
const result = await response.json()
|
|
if (result.errors) {
|
throw new Error(result.errors[0].message)
|
}
|
|
return result.data
|
}
|
|
// 通用API请求工具函数
|
export const apiRequest = async (endpoint: string, options: RequestInit = {}) => {
|
const url = endpoint.startsWith('http') ? endpoint : `${API_CONFIG.BASE_URL}${endpoint}`
|
|
const response = await fetch(url, {
|
headers: {
|
'Content-Type': 'application/json',
|
...options.headers,
|
},
|
...options,
|
})
|
|
if (!response.ok) {
|
throw new Error(`HTTP error! status: ${response.status}`)
|
}
|
|
return response.json()
|
}
|