更新记录
1.0.9(2026-08-06) 下载此版本
修复已知问题
1.0.8(2026-07-30) 下载此版本
修复已知问题
1.0.7(2026-07-30) 下载此版本
修复已知问题
查看更多平台兼容性
uni-app x(4.87)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
wp-request
基于 uni.request 封装的 UTS 网络请求插件,支持 GET/POST/PUT/DELETE 及文件上传,适用于 uni-app x 项目。
快速开始
1. 创建请求初始化文件
在项目中创建 utils/request/index.uts,统一初始化配置并导出便捷方法:
import { WpRequest, WpResponse, WpRequestOptions, WpUploadOptions } from '@/uni_modules/wp-request'
import { BASE_URL, BASE_API } from '@/config/env'
import { WpStorage } from '@/uni_modules/wp-storage'
import { showTips } from '@/utils/uniTool'
WpRequest.create({
baseUrl: BASE_URL + BASE_API,
timeout: 120000,
tokenProvider: () : string | null => {
return WpStorage.getToken()
},
onUnauthorized: () : void => {
uni.reLaunch({ url: '/pages/login/index' })
},
onError: (msg : string) : void => {
showTips({ title: msg.length > 0 ? msg : '请求失败' })
}
})
export function get(url : string, data : UTSJSONObject | null = null, header : UTSJSONObject | null = null) : Promise<UTSJSONObject> {
return WpRequest.get(url, data, header).then((res : WpResponse) : UTSJSONObject => {
return res.data
})
}
export function post(url : string, data : UTSJSONObject | null = null, header : UTSJSONObject | null = null) : Promise<UTSJSONObject> {
return WpRequest.post(url, data, header).then((res : WpResponse) : UTSJSONObject => {
return res.data
})
}
export function put(url : string, data : UTSJSONObject | null = null, header : UTSJSONObject | null = null) : Promise<UTSJSONObject> {
return WpRequest.put(url, data, header).then((res : WpResponse) : UTSJSONObject => {
return res.data
})
}
export function del(url : string, data : UTSJSONObject | null = null, header : UTSJSONObject | null = null) : Promise<UTSJSONObject> {
return WpRequest.delete(url, data, header).then((res : WpResponse) : UTSJSONObject => {
return res.data
})
}
export function uploadFile(url : string, filePath : string, name : string | null = null, header : UTSJSONObject | null = null, formData : UTSJSONObject | null = null) : Promise<UTSJSONObject> {
return WpRequest.uploadFile({ url: url, filePath: filePath, name: name, header: header, formData: formData } as WpUploadOptions).then((res : WpResponse) : UTSJSONObject => {
return res.data
})
}
export function rawRequest(options : WpRequestOptions) : Promise<WpResponse> {
return WpRequest.request(options)
}
export { WpRequest }
2. 在 API 文件中使用
get/post/put/del 直接返回 Promise<UTSJSONObject>,无需再取 .data:
import { get, post } from '@/utils/request'
export function bannerListAPI() : Promise<UTSJSONObject> {
return get('/xxx/xxx')
}
export function goodsDetailAPI(params : UTSJSONObject = {} as UTSJSONObject) : Promise<UTSJSONObject> {
return get('/xxx/xxx', params)
}
export function createOrderAPI(params : UTSJSONObject = {} as UTSJSONObject) : Promise<UTSJSONObject> {
return post('/xxx/xxx', params)
}
插件直接使用
也可以直接引入插件,此时返回 Promise<WpResponse>:
import { WpRequest } from "@/uni_modules/wp-request"
const res = await WpRequest.get('/xxx/xxx')
console.log(res.statusCode, res.data)
初始化配置(WpRequestConfig)
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| baseUrl | string | 是 | - | 接口基础地址 |
| timeout | number | 否 | 120000 | 请求超时时间(ms) |
| header | UTSJSONObject | 否 | {} | 全局默认请求头 |
| tokenProvider | () => string | null | 否 | null | Token 提供函数,返回值自动添加到 Authorization |
| tokenPrefix | string | 否 | "Bearer" | Authorization 前缀,设为空字符串则不添加前缀 |
| onUnauthorized | () => void | 否 | null | 401 未授权回调 |
| onError | (msg: string) => void | 否 | null | 请求错误回调 |
请求方法
GET
const data = await get('/xxx/xxx')
const data = await get('/xxx/xxx', { page: 1 } as UTSJSONObject)
const data = await get('/xxx/xxx', null, { 'X-Custom': 'val' } as UTSJSONObject)
POST
const data = await post('/xxx/xxx', { itemId: 123 } as UTSJSONObject)
PUT
const data = await put('/xxx/xxx', { nickname: '新名称' } as UTSJSONObject)
DELETE
const data = await del('/xxx/xxx', { orderId: 456 } as UTSJSONObject)
通用请求(返回完整 WpResponse)
const res = await rawRequest({
url: '/xxx/xxx',
method: 'GET',
data: { id: 1 } as UTSJSONObject,
header: { 'X-Token': 'xxx' } as UTSJSONObject,
timeout: 30000
})
WpRequestOptions
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| url | string | 是 | - | 接口路径(会拼接 baseUrl) |
| method | RequestMethod | 否 | GET | 请求方法 |
| data | UTSJSONObject | 否 | null | 请求参数 |
| header | UTSJSONObject | 否 | null | 请求头(覆盖全局配置) |
| timeout | number | 否 | 配置值 | 本次请求超时时间 |
| responseType | string | 否 | null | 响应数据类型 |
文件上传
const data = await uploadFile('/xxx/xxx', '/path/to/file.jpg', 'file')
WpUploadOptions
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| url | string | 是 | - | 上传接口路径 |
| filePath | string | 是 | - | 本地文件路径 |
| name | string | 否 | "file" | 文件对应的 key |
| header | UTSJSONObject | 否 | null | 请求头 |
| formData | UTSJSONObject | 否 | null | 额外的表单数据 |
| timeout | number | 否 | 配置值 | 上传超时时间 |
响应格式(WpResponse)
通过 WpRequest 或 rawRequest 调用时返回:
| 字段 | 类型 | 说明 |
|---|---|---|
| statusCode | number | HTTP 状态码 |
| data | UTSJSONObject | 响应数据 |
| header | UTSJSONObject | 响应头 |
动态修改配置
WpRequest.updateConfig({
baseUrl: 'https://new-api.example.com/v2',
timeout: 60000
})
Token 自动注入
配置 tokenProvider 后,每次请求自动调用该函数获取 Token 并添加到请求头:
WpRequest.create({
baseUrl: 'https://api.example.com',
tokenProvider: () => uni.getStorageSync('access_token') as string | null
})
请求头自动添加:Authorization: Bearer <token>
自定义前缀或无前缀:
tokenPrefix: '' // Authorization: <token>
tokenPrefix: 'Token' // Authorization: Token <token>
错误码
| 错误码 | 说明 |
|---|---|
| 9040001 | 请求配置无效(baseUrl 为空) |
| 9040002 | 网络请求失败 |
| 9040003 | 服务器响应异常 |
| 9040004 | 未授权访问(401) |
| 9040005 | 文件上传失败 |
支持平台
- Android
- iOS
- HarmonyOS

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 37
赞赏 1
下载 12526276
赞赏 1944
赞赏
京公网安备:11010802035340号