更新记录
2.1.0(2025-10-31) 下载此版本
添加更详细的注释和ts规则限制
2.0(2025-10-31) 下载此版本
优化了的封装方法,可以和axios无缝切换
1.0.1(2023-04-04) 下载此版本
请求拦截支持自定义返回参数
查看更多平台兼容性
uni-app(4.84)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | - | √ | √ | √ | √ |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| × | × | √ |
/**
* 以 uni.request 模拟 axios 的轻量封装(支持 create、拦截器、get/post 等方法)。
*
* 目标:在 uni-app 环境下提供与 axios 使用方式近似的 API,便于跨端统一。
* - 支持 axios.create(defaults)
* - 支持 request/response 拦截器(use/eject)
* - 支持 request(config) 以及 get/post/put/delete 调用
* - 支持 baseURL、headers、timeout、params、data
*
* 注意:此封装并不完全等价 axios,主要适配常用能力;如需要更多特性可按需扩展。
*/
/**
* 使用说明与示例:
*
* 1) 创建实例(与 axios 一致):
* const request = axios.create({
* baseURL: import.meta.env.VITE_APP_BASE_API,
* timeout: 5000,
* headers: { 'Content-Type': 'application/json', isToken: 'true' },
* })
*
* 2) 请求拦截器(添加 token / 加密等):
* request.interceptors.request.use((config) => {
* const isToken = config.headers?.isToken === 'true'
* if (isToken) {
* const token = localStorage.getItem('token')
* if (token) {
* config.headers['Authorization'] = 'Bearer ' + token
* config.headers['clientid'] = import.meta.env.VITE_APP_CLIENT_ID
* }import { typeAxiosPromise } from 'axios';
* }
* // 注意:仅用于前端判断的控制型字段(如 isToken/isEncrypt/repeatSubmit)
* // 建议读取后删除,避免被真实发送到后端导致 CORS 预检失败:
* // delete config.headers.isToken; delete config.headers.isEncrypt; delete config.headers.repeatSubmit
* return config
* })
*
* 3) 响应拦截器(统一处理业务 code/401 等):
* request.interceptors.response.use((response) => {
* if (response.data?.code \&\& response.data.code !== 200) {
* uni.showToast({ title: response.data.msg || '请求发生错误', icon: 'none' })
* }
* if (response.data?.code === 401) {
* localStorage.removeItem('token')
* uni.showToast({ title: '登录失效,请重新登录', icon: 'none' })
* setTimeout(() => { window.location.href = '/login' }, 1000)
* }
* return response.data
* }, (error) => Promise.reject(error))
*
* 4) 发起请求:
* request({ url: '/disk/user/file/list', method: 'GET', params: { pageNum: 1 } })
* request.post('/auth/user/login', { username, password }, { headers: { isToken: false, isEncrypt: true } })
*
* 差异与限制:
* - 此封装基于 uni.request,不支持 axios 的 CancelToken/AbortController(如需取消可自行扩展)。
* - responseType 仅做基本映射(arraybuffer/text),dataType 默认按 uni 的 json 处理。
* - method 大小写不敏感,内部会统一转为大写传给 uni.request。
* - 由于跨域预检(CORS),请谨慎发送自定义请求头;仅用于前端判断的头建议在拦截器里删除。
*/

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 74
赞赏 0
下载 11634751
赞赏 1817
赞赏
京公网安备:11010802035340号