灰儿 发表于 2022-7-27 14:51:10

Vue和uni-app引入uView组件中的http请求http.interceptor.js文件的方法

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中的引入示例:

// main.js

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

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

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

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

export default {
      install
}

页: [1]
查看完整版本: Vue和uni-app引入uView组件中的http请求http.interceptor.js文件的方法