first commit
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
import { ref } from 'vue'
|
||||
|
||||
// 基础配置
|
||||
// const BASE_URL = "http://192.168.41.118:9090/api"
|
||||
const BASE_URL = "/api"
|
||||
|
||||
export function useRequest() {
|
||||
const loading = ref(false)
|
||||
const error = ref<any>(null)
|
||||
|
||||
// 核心请求方法
|
||||
const sendRequest = <T = any>(options: UniApp.RequestOptions): Promise<T> => {
|
||||
loading.value = true
|
||||
error.value = null
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
// 处理URL
|
||||
const url = options.url.startsWith('http')
|
||||
? options.url
|
||||
: `${BASE_URL}/${options.url.replace(/^\//, '')}`
|
||||
|
||||
// 添加token
|
||||
const token = uni.getStorageSync('token')
|
||||
const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
...(token ? { 'Authorization': `Bearer ${token}` } : {}),
|
||||
...options.header
|
||||
}
|
||||
|
||||
uni.request({
|
||||
url,
|
||||
method: options.method || 'GET',
|
||||
data: options.data,
|
||||
header: headers,
|
||||
timeout: options.timeout || 10000,
|
||||
success: (res) => {
|
||||
if (res.statusCode >= 200 && res.statusCode < 300) {
|
||||
resolve(res.data as T)
|
||||
} else {
|
||||
const err = new Error(res.data?.message || '请求失败')
|
||||
error.value = err
|
||||
reject(err)
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
error.value = err
|
||||
reject(err)
|
||||
},
|
||||
complete: () => {
|
||||
loading.value = false
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// GET请求
|
||||
const get = <T = any>(url: string, params?: any) => {
|
||||
return sendRequest<T>({
|
||||
url,
|
||||
method: 'GET',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
// POST请求
|
||||
const post = <T = any>(url: string, data?: any) => {
|
||||
return sendRequest<T>({
|
||||
url,
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
loading,
|
||||
error,
|
||||
request: sendRequest,
|
||||
get,
|
||||
post
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user