更新记录
2.0.0(2025-01-15)
下载此版本
代码拆分
1.2.0(2024-08-22)
下载此版本
1
1.1.9(2024-08-13)
下载此版本
1
查看更多
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 3.1.0 app-vue app-nvue |
√ |
√ |
√ |
√ |
√ |
√ |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
鸿蒙元服务 |
√ |
√ |
√ |
√ |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
x-network
用法说明
Http 详见
复制代码import { http, uploadFile } from '@/uni_modules/x-network/demo/index.js'
http.get('/common/sysTime', { a: 123 }).then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})
http.post('/common/sysTime', { a: 321 }).then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})
uploadFile.uploadImage({}, ({ uploadTask, filePath }) => {
console.log(uploadTask, filePath);
}).then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})
uploadFile.uploadImages({}, uploadTasks => {
console.log(uploadTasks);
}).then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})
uploadFile.uploadVideo({}, ({ uploadTask, filePath }) => {
console.log(uploadTask, filePath);
}).then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})
WebSocket 详见
复制代码import { webSocket, Message } from '@/uni_modules/x-network/demo/index.js'
await webSocket.init('ws://localhost:3000/api/socket?token=xxx')
webSocket.send(new Message('newMessage', '这是一条新消息'))
webSocket.close()
uni.$on('newMessage', data => {
console.log(data)
})
/uni_modules/x-network/demo/index.js 文件内容 (该文件只是一个示例用法,实际使用请根据自己项目进行更改)
复制代码import {
baseUrl,
uploadUrl,
socketUrl,
requestTimeout,
uploadTimeout
} from '@/uni_modules/x-http/demo/config.js'
import { Request, UploadFile } from '@/uni_modules/x-network/js_sdk/http.js'
import { MyWebSocket } from '@/uni_modules/x-network/js_sdk/webSocket.js'
import { isLoginExpire, fileLimit, logReqErr } from '@/uni_modules/x-http/demo/utils.js'
export { Message } from '@/uni_modules/x-network/js_sdk/webSocket.js'
const excludeLoadingUrl = ['/api/xxx']
let requestLoadingCount = 0
const requestInterceptor = async function(options) {
if (!excludeLoadingUrl.includes(options.url.replace(baseUrl, ''))) {
uni.showLoading({
mask: true
})
requestLoadingCount++
}
options.header.token = uni.getStorageSync('token')
if (options.filePath) fileLimit(options)
}
const responseInterceptor = async function(res) {
const {
reqConf,
err
} = res
console.groupCollapsed(reqConf.url.replace(baseUrl, ''))
console.log('------------------------------------------------------------------------------')
console.log('REQ URL', reqConf.url);
console.log('REQ HEADER', reqConf.header);
console.log('REQ DATA', reqConf.data);
console.log('RES DATA', res.data);
console.log('------------------------------------------------------------------------------')
console.groupEnd(reqConf.url.replace(baseUrl, ''))
if (!excludeLoadingUrl.includes(reqConf.url.replace(baseUrl, ''))) {
requestLoadingCount--
if (!requestLoadingCount) {
uni.hideLoading()
}
}
if (res.statusCode == 200) {
try {
if (typeof res.data == 'string') res.data = JSON.parse(res.data)
} catch (e) {}
if (res.data.code == 200) {
return res.data.data
} else {
logReqErr(res)
if (!isLoginExpire(res.data.code)) {
uni.showToast({
icon: "none",
title: res.data.msg || res.data.message || `Error code ${res.data.code}`,
duration: 2000,
});
}
return Promise.reject(res)
}
} else {
logReqErr(res)
if (!isLoginExpire(res.statusCode) && !err) {
uni.showToast({
icon: "none",
title: "网络错误, 请稍后重试~",
duration: 2000,
});
}
if (err) {
uni.showToast({
icon: "none",
title: err.message || err.errMsg,
duration: 2000,
});
}
return Promise.reject(res)
}
}
export const http = new Request({
baseUrl,
timeout: requestTimeout,
requestInterceptor,
responseInterceptor
})
export const uploadFile = new UploadFile({
uploadUrl,
timeout: uploadTimeout,
requestInterceptor,
responseInterceptor
})
export const webSocket = new MyWebSocket((message) => {
console.log('收到消息 ------ ', message);
uni.$emit(message.event, message.data)
}, true)
插件如果对你有帮助给个好评吧~