最近,在Vue前端调试http请求,无论如何如何也是拦截不了某些http请求。场景是这样的:Java后端组装好Vue对象,然后送到前端,前端通过id来挂载该Vue对象,而该对象中有上传文件或者图片的控件,正是对这些控件的http请求是无法拦截的,所以导致没发设置请求头信息。后来经过对这一场景的梳理,有了一些心得,现记录如下。

  在Vue前端开发时,可以通过id来挂载Vue对象,从而展示界面;要是这种对象都是在前端生成的话,那么处理起来很方便;要是该对象是从后端通过Java组装生成的并传输过来的话,那么有些地方或者是细节方面就需要注意了;现列举如下,以供后续参考,下面所说的Vue对象都来自后端组装生成而来。

  (1)在该Vue对象中所有的http请求都不要直接采用axios对象,而是采用this.$http的方式,注意了$http是主工程中Vue的一个全局属性,可以在主工程中这样添加:Vue.property.$http = axios;在被挂载的Vue对象为啥要用全局方式this.$http呢?这样做的好处是方便被主工程的拦截器拦截,同时也可以继承主工程的请求头信息;若是直接采用axios对象的话,那么在主工程中是无法拦截的,更没发继承主工程的请求头信息了。

  (2)在该Vue对象中若是需要一些额外的数据,可以通过全局属性获取,也可以通过Vue对象的属性来绑定,最好是通过一个对象的方式来绑定属性。

  (3)在该Vue对象中若是用到element的upload组件的话,那么该http请求是不会被主工程拦截器所拦截的,并且也不会继承主工程中的请求头信息;所以当需要相关的请求头信息时要买通过全局属性来获取,要么通过数据绑定来获取;建议还是通过数据绑定来处理比较合适,比如说需要请求头信息,可以在被挂载的Vue对象中建立一个headers属性,类型为Object,默认值为{},这样在挂载主工程某个节点时可以通过数据绑定headers属性来传给被挂载的Vue对象,以后需要添加请求头信息,只要在主工程中添加然后绑定给headers属性就可以了,而被挂载的Vue对象根本就不用感知有哪些请求头信息,它只负责填充和传输。

  此外,在Vue中添加对http的拦截器,可以参考下面示例:

  import axios from 'axios'

  axios.interceptors.request.user(function(config)) {

    // 这里可以进行请求之前的处理

  }

  axios.interceptors.response.user(function(config)) {

    // 这里可以进行响应之后的处理

  }

------20191225闪

Vue前端挂载对象时一些思考的更多相关文章

  1. Vue之挂载点、变量、事件、js对象、文本指令、过滤器、事件指令和属性指令

    1.vue导入-挂载点 <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&qu ...

  2. vue中,对象数组多层嵌套时,更新数据更新页面

    vue中的对象和数组的元素直接赋值修改时,是不能响应到view中去的 1.对象更新 this.a={title:'列表1’}; this.a.title='列表2’; <h1>{{a.ti ...

  3. vue validate多表单验证思考 之前写过一个里外层,现在觉得不合适,应该平行的写,然后都给ret,最后判断ret 再做出反应,这样整体表单的所有验证就都报验证,然后最后提交的时候把组件内的对象合并到总的对象,再提交

    vue validate多表单验证思考 之前写过一个里外层,现在觉得不合适,应该平行的写,然后都给ret,最后判断ret 再做出反应,这样整体表单的所有验证就都报验证,然后最后提交的时候把组件内的对象 ...

  4. vue 前端框架 (三)

    VUE 生命周期 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  5. vue前端框架面试问题汇总

    1.active-class是哪个组件的属性?嵌套路由怎么定义?答:vue-router模块的router-link组件. 2.怎么定义vue-router的动态路由?怎么获取传过来的动态参数? 答: ...

  6. Vue前端框架面试问题

    1.active-class是哪个组件的属性?嵌套路由怎么定义? 答:vue-router模块的router-link组件. 2.怎么定义vue-router的动态路由?怎么获取传过来的动态参数? 答 ...

  7. Vue前端框架基础+Element的使用

    前置内容: AJAX基础+Axios快速入门+JSON使用 目录 1.VUE 1.1 概述 1.2 快速入门 1.3 Vue指令 1.3.1 v-bind & v-model 指令 1.3.2 ...

  8. Vue路由开启keep-alive时的注意点

    Vue路由开启keep-alive时的注意点   这个不是业务的要求,但是看到每次进入页面就重新渲染DOM然后再获取数据更新DOM,觉得作为一个前端工程师有必要优化下的加载逻辑,正好vue提供了 ke ...

  9. Vue的实例对象(三)

    一.创建一个 Vue 实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 当创建一个 Vue 实例时,你可以传入 ...

随机推荐

  1. Bookshelf 2 01背包

    B - Bookshelf 2 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submi ...

  2. VS2015中使用qt开发客户端,QPluginLoader加载dll为null的解决办法

    1,问题重现: 使用vs2015开发一款qt软件,使用了QPluginLoader动态加载插件的方式,调试的时候,发现dll模块没有加载进来,debug发现QPluginLoader的instance ...

  3. c++ bool

    bool 就两个值,真或者假,通常用来存储关系表达式或者逻辑表达式的结果. 以前是用 int 来表示真假,大 int 有多个值,所以才规定 0 为假,非零为真,导致对应关系比较麻烦,有了 bool 就 ...

  4. 【STM32H7教程】第62章 STM32H7的MDMA,DMA2D和通用DMA性能比较

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第62章       STM32H7的MDMA,DMA2D和通 ...

  5. Python爬虫连载10-Requests模块、Proxy代理

    一.Request模块 1.HTTP for Humans,更简洁更友好 2.继承了urllib所有的特征 3.底层使用的是urllib3 4.​开源地址:https://github.com/req ...

  6. JVM垃圾回收——GC

    一.JVM内存分配与回收 下图为堆内存结构图(注意:元数据区(MetaData )实际上不属于堆): 1.对象优先在Eden区分配 大多数情况下,对象在新生代中Eden区分配.当Eden区没有足够空间 ...

  7. Git操作:绑定上传已存在的仓库到Github

    之前使用github都是创建一个全新的仓库,然后clone下来用,但如果我已经有一个正在使用的仓库,想要绑定上传已存在的仓库到github,怎么做呢?其实在github创建仓库的时候会提示: …or ...

  8. linux - top与ps间的区别

    背景 在linux系统中提供了2个查询系统负荷值的命令,一个是 ps -o THREAD 一个是 top ,这两个命令都能够查询当前进程的CPU使用率情况,但是所代表的含义确实不一样的,ps -o T ...

  9. git 流程

    1.git clone 拉取代码2.git checkout -b '分支名称' 命令意思: 创建并切换到当前新建的本地分支. 查看并创建分支,先远端,后本地.3.将本地分支和远端分之关联 git b ...

  10. python命令行工具的使用——argparse

    argparse是一个常用的库函数,使用它的时候我们在命令行中不仅仅可以运行python文件,更可以零时调整参数,十分方便. 首先,如果你只是希望传一丢丢数据进去,那么只看下面两行就行了 import ...