热搜词
发表于 2022-7-27 14:51:10 | 显示全部楼层 |阅读模式
Vue和uni-app引入uView组件中的http请求拦截器http.interceptor.js文件的方法

具体写法,建议在写在/common/http.interceptor.js(如无此文件夹和文件,请手动创建,一次配置,全局通用),写完之后,


在uni-app项目根目录的 main.js  文件的 new Vue() 和 app.$mount() 之间引入uView组件中的拦截器http.interceptor.js文件,在new Vue()后面的原因是,外部JS文件需要引用vue的实例,也即this对象,要等main.js中通过new创建了实例之后才能引用。 在app.$mount()之前的原因是,在Vue挂载this实例(也即初始化App.vue)之前配置请求信息,所以在App.vue中也能正常发出请求。

以下为在main.js中的引入示例:

  1. // main.js

  2. // 此为main.js本身已有内容
  3. const app = new Vue({
  4.   ...App
  5. })

  6. // http拦截器,此为需要加入的内容,如果不是写在common目录,请自行修改引入路径
  7. import httpInterceptor from '@/common/http.interceptor.js'
  8. // 这里需要写在最后,是为了等Vue创建对象完成,引入"app"对象(也即页面的"this"实例)
  9. Vue.use(httpInterceptor, app)

  10. app.$mount()
复制代码
下面为配置信息的具体内容:
  1. // common/http.interceptor.js

  2. // 这里的Vue为Vue对象(非创建出来的实例),vm为main.js中“Vue.use(httpInterceptor, app)”这一句的第二个参数,
  3. // 为一个Vue的实例,也即每个页面的"this"
  4. // 如果需要了解这个install方法是什么,请移步:https://uviewui.com/components/vueUse.html
  5. const install = (Vue, vm) => {
  6.         // 此为自定义配置参数,具体参数见上方说明
  7.         Vue.prototype.$u.http.setConfig({
  8.                 baseUrl: 'https://api.example.com',
  9.                 loadingText: '努力加载中~',
  10.                 loadingTime: 800,
  11.                 // 设置自定义头部content-type
  12.                 // header: {
  13.                 //         'content-type': 'xxx'
  14.                 // }
  15.                 // ......
  16.         });
  17. }

  18. export default {
  19.         install
  20. }
复制代码


全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-11-1 08:14 , Processed in 0.176238 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team