171 lines
4.4 KiB
JavaScript
171 lines
4.4 KiB
JavaScript
// HTTP请求配置
|
||
const API_BASE_URL = 'https://api.likeichat.com'
|
||
|
||
// 默认公共请求头配置
|
||
let COMMON_HEADERS = {
|
||
'authorization': 'Bearer F77126B08E13987C3AD88B6015C5B777.djIlM0ExOTU0MDU5NzkzOTYzMzkzMDI1JTNBTElLRUklM0ExNzU3NzYzODU5NzE1JTNBMTc1NTE3MTg1OTcxNQ==',
|
||
'req-app-intel': 'version=1.0.0;build=1;model=SM-G9550;sysVersion=9;channel=Google',
|
||
'req-client': 'Android',
|
||
'req-imei': '8fa54d728ab449e04f9292329ed44bda',
|
||
'req-lang': 'id-ID',
|
||
'req-sys-origin': 'origin=LIKEI;originChild=LIKEI',
|
||
'req-version': 'V2',
|
||
'req-zone': 'Asia/Shanghai',
|
||
}
|
||
|
||
/**
|
||
* 更新公共请求头
|
||
* @param {object} headers - 要更新的请求头
|
||
*/
|
||
export function updateCommonHeaders(headers) {
|
||
COMMON_HEADERS = {
|
||
...COMMON_HEADERS,
|
||
...headers
|
||
}
|
||
console.log('🔄 Updated common headers:', COMMON_HEADERS)
|
||
}
|
||
|
||
/**
|
||
* 从APP头部信息设置HTTP请求头
|
||
* @param {object} headerInfo - APP传递的头部信息
|
||
*/
|
||
export function setHeadersFromApp(headerInfo) {
|
||
const updatedHeaders = {}
|
||
|
||
// 设置Authorization
|
||
if (headerInfo.authorization) {
|
||
updatedHeaders.authorization = headerInfo.authorization
|
||
}
|
||
|
||
// 设置语言
|
||
if (headerInfo.reqLang) {
|
||
updatedHeaders['req-lang'] = headerInfo.reqLang
|
||
}
|
||
|
||
// 设置APP信息
|
||
if (headerInfo.appVersion || headerInfo.buildVersion || headerInfo.appChannel) {
|
||
const appIntelParts = []
|
||
if (headerInfo.appVersion) appIntelParts.push(`version=${headerInfo.appVersion}`)
|
||
if (headerInfo.buildVersion) appIntelParts.push(`build=${headerInfo.buildVersion}`)
|
||
if (headerInfo.appChannel) appIntelParts.push(`channel=${headerInfo.appChannel}`)
|
||
|
||
if (appIntelParts.length > 0) {
|
||
updatedHeaders['req-app-intel'] = appIntelParts.join(';')
|
||
}
|
||
}
|
||
|
||
// 设置设备信息
|
||
if (headerInfo.reqImei) {
|
||
updatedHeaders['req-imei'] = headerInfo.reqImei
|
||
}
|
||
|
||
// 设置系统来源
|
||
if (headerInfo.sysOrigin) {
|
||
const sysOriginParts = [`origin=${headerInfo.sysOrigin}`]
|
||
if (headerInfo.sysOriginChild) {
|
||
sysOriginParts.push(`child=${headerInfo.sysOriginChild}`)
|
||
}
|
||
updatedHeaders['req-sys-origin'] = sysOriginParts.join(';')
|
||
}
|
||
|
||
updateCommonHeaders(updatedHeaders)
|
||
}
|
||
|
||
/**
|
||
* 通用HTTP请求函数
|
||
* @param {string} url - 请求URL
|
||
* @param {object} options - 请求选项
|
||
* @returns {Promise} - 返回Promise对象
|
||
*/
|
||
export async function request(url, options = {}) {
|
||
const {
|
||
method = 'GET',
|
||
data = null,
|
||
headers = {},
|
||
...otherOptions
|
||
} = options
|
||
|
||
const fullUrl = url.startsWith('http') ? url : `${API_BASE_URL}${url}`
|
||
|
||
const config = {
|
||
method,
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
...COMMON_HEADERS,
|
||
...headers
|
||
},
|
||
...otherOptions
|
||
}
|
||
|
||
// 如果是POST、PUT等方法且有数据,添加body
|
||
if (data && ['POST', 'PUT', 'PATCH'].includes(method.toUpperCase())) {
|
||
config.body = JSON.stringify(data)
|
||
}
|
||
|
||
try {
|
||
console.log('🚀 API Request:', fullUrl, config)
|
||
|
||
const response = await fetch(fullUrl, config)
|
||
|
||
if (!response.ok) {
|
||
throw new Error(`HTTP Error: ${response.status} ${response.statusText}`)
|
||
}
|
||
|
||
const result = await response.json()
|
||
|
||
console.log('✅ API Response:', result)
|
||
|
||
// 检查业务状态
|
||
if (result.status === false) {
|
||
throw new Error(result.message || `API Error: ${result.errorCode}`)
|
||
}
|
||
|
||
return result
|
||
} catch (error) {
|
||
console.error('❌ API Error:', error)
|
||
throw error
|
||
}
|
||
}
|
||
|
||
/**
|
||
* GET请求
|
||
* @param {string} url - 请求URL
|
||
* @param {object} options - 请求选项
|
||
* @returns {Promise}
|
||
*/
|
||
export function get(url, options = {}) {
|
||
return request(url, { ...options, method: 'GET' })
|
||
}
|
||
|
||
/**
|
||
* POST请求
|
||
* @param {string} url - 请求URL
|
||
* @param {object} data - 请求数据
|
||
* @param {object} options - 请求选项
|
||
* @returns {Promise}
|
||
*/
|
||
export function post(url, data, options = {}) {
|
||
return request(url, { ...options, method: 'POST', data })
|
||
}
|
||
|
||
/**
|
||
* PUT请求
|
||
* @param {string} url - 请求URL
|
||
* @param {object} data - 请求数据
|
||
* @param {object} options - 请求选项
|
||
* @returns {Promise}
|
||
*/
|
||
export function put(url, data, options = {}) {
|
||
return request(url, { ...options, method: 'PUT', data })
|
||
}
|
||
|
||
/**
|
||
* DELETE请求
|
||
* @param {string} url - 请求URL
|
||
* @param {object} options - 请求选项
|
||
* @returns {Promise}
|
||
*/
|
||
export function del(url, options = {}) {
|
||
return request(url, { ...options, method: 'DELETE' })
|
||
}
|