最近,在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. 珠峰-6-koa-express

    ####  这里写await和return 的区别是, await后边还可以写代码,而return 不会. ##### koa这里需要注意 这样子方法1比起方法2,少写n个url类似这样的key.

  2. h5笔记1

    1.HTML中不支持 空格.回车.制表符,它们都会被解析成一个空白字符 2.适用于大多数 HTML 元素的属性: class 为html元素定义一个或多个类名(classname)(类名从样式文件引入 ...

  3. NCE L3

    单词 课文

  4. StarUML之六、StarUML规则与快捷键

    本章内容参考官网即可,不做详细说明,实践出真知! starUMl规则主要是在模型设计的约束条件 https://docs.staruml.io/user-guide/validation-rules ...

  5. Policy-based Approach(基于策略的方法)

    step 1:Neural Network as Actor step 2:goodness of function(训练一些Actor) 是一个序列,包含T个状态s.行为a.奖励s.代表某一次的开始 ...

  6. 怎样将应用程序快捷方式添加到win10开始菜单栏中去

    怎样将应用程序快捷方式添加到win10开始菜单栏中去 找到需要固定的应用程序的安装文件的位置,右键,在弹出的菜单中选择“固定到开始屏幕”即可. 或者是找到需要固定到开始菜单的应用程序的快捷方式,右键, ...

  7. vue搭建手顺

    1.环境准备:node.js  vue-cli: $ npm install vue-cli -g 2.建立项目目录:vuedemo,并cd到该目录下 3.$ vue init webpack  vu ...

  8. Oracle修改用户Profile SESSIONS_PER_USER 限制

    一.Profile目的: Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如 ...

  9. CommonJs模块化(nodejs模块规范)

    1.概述: Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量.函数.类,都是私有的,对其他文件不可见. 如果想在多个 ...

  10. es5和es6中如何处理不确定参数

    场景:求出不定参数的总数和 //利用arguments function sum () { let num = 0 //Array.prototype.forEach.call(arguments,f ...