dapaijizhang3/utils/request.js

81 lines
2.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { gatewayHttpClient } from '@jdmini/api'
// API路径
const API_PATH = '/mp/jd-dapaijizhang'
// 请求封装
class Request {
// 通用请求方法
// 网关请求。参数路径、方法、数据、其他选项如headers、responseType
async request(url, method = 'GET', data = {}, options = {}) {
try {
// 构建完整路径
const fullPath = `${API_PATH}${url}`
// 合并选项
const requestOptions = {
headers: {
'Content-Type': 'application/json',
...options.headers
},
...options
}
// 使用网关请求,参数:路径、方法、数据、其他选项
const res = await gatewayHttpClient.request(fullPath, method, data, requestOptions)
// 处理响应
if (res && res.code === 200) {
// 成功返回data字段
return res.data
} else if (res && res.code === 401) {
// 未授权,跳转登录
wx.showToast({
title: res.message || '请重新登录',
icon: 'none'
})
setTimeout(() => {
wx.navigateTo({
url: '/pages/login/login'
})
}, 1500)
throw res
} else {
// 其他错误不自动显示toast让调用者处理
throw res || { code: 500, message: '请求失败' }
}
} catch (error) {
console.error('请求错误:', error)
throw error
}
}
// GET请求
get(url, params = {}, options = {}) {
// 将params转换为查询字符串
const queryString = Object.keys(params)
.map(key => `${key}=${encodeURIComponent(params[key])}`)
.join('&')
const finalUrl = queryString ? `${url}?${queryString}` : url
return this.request(finalUrl, 'GET', {}, options)
}
// POST请求
post(url, data = {}, options = {}) {
return this.request(url, 'POST', data, options)
}
// PUT请求
put(url, data = {}, options = {}) {
return this.request(url, 'PUT', data, options)
}
// DELETE请求
delete(url, options = {}) {
return this.request(url, 'DELETE', {}, options)
}
}
// 导出实例
export default new Request()