该段代码是一个封装的 HTTP 请求函数,以下是每一段代码的解释:

  1. 导入了 useMemberStore 函数,该函数是从 '@/stores/index' 模块中导入的。这个函数可能是一个自定义的钩子函数,用于获取用户信息。

  2. 定义了一个 Data 泛型类型,包含了 codemsgresult 三个属性。

  3. 定义了 baseURL 常量,表示请求的基本 URL。

  4. 定义了 instance 常量,类型为 UniApp.InterceptorOptions,用于定义请求拦截器的配置。

  5. instance 对象有一个 invoke 方法,该方法接收一个 options 参数,类型为 UniApp.RequestOptions,表示请求配置。

  6. invoke 方法中,首先判断请求的 URL 是否以 http 开头,如果不是,则将 baseURLoptions.url 拼接起来作为新的 URL。

  7. 设置请求超时时间为 10000 毫秒。

  8. 添加小程序端请求头标识,将 'source-client': 'miniapp' 添加到请求头中。

  9. 获取用户令牌(token),如果没有令牌,则直接返回。

  10. 将用户令牌添加到请求头的 Authorization 字段中。

  11. 使用 uni.addInterceptor 方法将 instance 对象添加为请求和上传文件的拦截器。

  12. 定义了一个 http 函数,使用泛型 <T> 表示返回的数据类型。

  13. http 函数接收一个 options 参数,类型为 UniApp.RequestOptions,表示请求配置。

  14. http 函数返回一个 Promise 对象。

  15. Promise 的构造函数中,使用 uni.request 方法发送请求。

  16. 请求成功时,判断响应的状态码是否在 200 到 299 之间。如果是,则将响应的核心数据 res.data 作为 resolve 的参数返回。

  17. 如果状态码为 401,表示用户未授权,清除用户信息并跳转到登录页面。

  18. 其他错误情况下,根据后端返回的错误信息进行轻提示,并将错误信息作为 reject 的参数返回。

  19. 请求失败时,提示网络错误,并将错误信息作为 reject 的参数返回。

  20. 导出 http 函数作为默认导出。

Uni-app HTTP请求封装详解:代码逐行解析

原文地址: https://www.cveoy.top/t/topic/qoh3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录