更新记录

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),请谨慎发送自定义请求头;仅用于前端判断的头建议在拦截器里删除。

 */

隐私、权限声明

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

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

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

许可协议

MIT协议

暂无用户评论。