更新记录

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)

通过 WpRequestrawRequest 调用时返回:

字段 类型 说明
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

开发文档

UTS 语法

UTS API插件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。