更新记录
1.0.0(2026-07-20)
- HTTP:OPTIONS / GET / HEAD / POST / PUT / DELETE
- 上传、下载与进度回调
- WebSocket:
XViewSocketClient(Web / 微信小程序);App 未声明 SocketTask 时返回9001003 - 网络状态查询与监听;无网 / 断网统一错误码
- 请求、响应、调试拦截器
- 修复 App(JS) 普通对象
toMap()报错、Android 响应字段丢失、网络 API 缺失时的降级
平台兼容性
uni-app(4.87)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
uni-app x(5.0)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
xview-request
面向 uni-app 与 uni-app x 的跨端网络请求插件。统一包装官方 uni.request、uni.uploadFile、uni.downloadFile、SocketTask 与网络状态 API,对外提供 HTTP、文件传输、WebSocket、网络监听与拦截器能力。
安装与引入
将 uni_modules/xview-request 放入项目后,在 HBuilderX 中重新编译。
// uni-app(Vue / TS)
import { Request, createRequest, getRequestFail } from '@/uni_modules/xview-request'
// uni-app x(UTS)
import { Request } from '@/uni_modules/xview-request'
快速开始
const request = new Request({
baseURL: 'https://api.example.com',
timeout: 15000
})
// 请求拦截器:追加 Token
request.onRequestInterceptor((config) => {
const header = config.header || {}
header.Authorization = 'Bearer token'
config.header = header
return config
})
// 响应拦截器:处理状态码并返回业务 data
request.onResponseInterceptor((response) => {
if (response.statusCode === 401) {
uni.showToast({ title: '登录状态已失效', icon: 'none' })
}
return response.data
})
// 调试拦截器:打印请求摘要(成功/失败均触发)
request.onDebuggerInterceptor((debug) => {
console.log(debug.statusCode, debug.duration, debug.error)
})
await request.get('/users', null, { params: { page: 1 } })
也可使用工厂函数:const request = createRequest({ baseURL: '...' })
API
Request 实例
| 方法 | 说明 |
|---|---|
onRequestInterceptor(fn) |
注册请求拦截器 |
onResponseInterceptor(fn) |
注册响应拦截器 |
onDebuggerInterceptor(fn) |
注册调试拦截器 |
getNetworkStatus() |
查询当前网络状态 |
watchNetworkStatus(listener) |
监听网络变化,返回 listenerId |
stopNetworkStatus(listenerId) |
取消监听 |
request(config) |
通用请求,method 默认 GET |
options / get / head / post / put |
HTTP 快捷方法 |
formPost |
POST,Content-Type: application/x-www-form-urlencoded |
deleteRequest |
DELETE(delete 为语言关键字) |
upload / download |
文件上传 / 下载 |
connectSocket(options) |
建立 WebSocket,返回 XViewSocketClient |
XViewSocketClient
| 方法 | 说明 |
|---|---|
send({ data }) |
发送 string 或 ArrayBuffer |
close({ code, reason }) |
关闭连接,默认 code=1000 |
错误处理
Promise reject 值为 IRequestError。页面 catch 时可使用:
import { getRequestFail } from '@/uni_modules/xview-request'
request.get('/users').catch((err) => {
const error = getRequestFail(err)
console.log(error.errCode, error.errMsg)
})
拦截器
拦截器按注册顺序执行。
请求拦截器:插件会先复制 config、header、params、formData,再执行拦截器。App(JS) 桥接可能把返回值转为 kotlin.Unit,推荐就地修改 config 后返回。
响应拦截器:入参为统一 IRequestResponse,返回值作为 Promise 最终 resolve 值。常见写法是直接返回 response.data;下载场景可返回 response.tempFilePath。
调试拦截器:每次请求结束触发,包含 config、response、error、statusCode、duration、networkStatus。
HTTP 与文件
request.get('/users', { id: 1 }) // query 也可写在 config.params
request.post('/users', { name: 'Ada' })
request.formPost('/token', { username: 'demo', password: 'secret' })
request.deleteRequest('/users/1')
request.upload('/files', {
filePath: localPath,
name: 'file',
formData: { category: 'avatar' },
Update: (p) => console.log(p.progress)
})
request.download('/files/logo.png', {
filePath: targetPath, // 可选;不传则返回临时路径
Update: (p) => console.log(p.progress)
})
- 上传必须提供
filePath或files,否则 reject9001004。 - 下载成功响应含
tempFilePath、filePath;配合响应拦截器可直接 resolve 文件路径。
Socket 与网络
const socket = request.connectSocket({
url: 'wss://echo.example.com',
header: { token: 'xxx' },
onOpen: () => {},
onMessage: (msg) => console.log(msg.data),
onError: (err) => console.error(err.errMsg),
onClose: (res) => console.log(res.code)
})
await socket.send({ data: 'hello' })
await socket.close({ code: 1000 })
const status = await request.getNetworkStatus()
const id = request.watchNetworkStatus((s) => console.log(s.networkType, s.isConnected))
request.stopNetworkStatus(id)
- 每个连接独立
SocketTask,勿混用全局 Socket API。 - 请求下发前检查网络,无网 reject
9001001;请求期间断网时,底层失败也会归类为9001001。
错误码
| 错误码 | 含义 |
|---|---|
| 9001001 | 当前网络不可用 |
| 9001002 | 底层请求失败或拦截器执行失败 |
| 9001003 | 当前端不支持该能力 / 方法 |
| 9001004 | 参数或配置不合法 |
| 9001005 | Socket 建连、发送或关闭失败 |
运行前配置
插件不替代应用侧安全配置:
- Web:需服务端 CORS
- 小程序:需配置合法 request / upload / download / socket 域名
- App:需网络权限;HTTPS/WSS 推荐用于生产环境

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(0)
下载 21
赞赏 0
下载 12442127
赞赏 1935
赞赏
京公网安备:11010802035340号