vue axios整合使用全攻略

惯例先安装axios,不多说!

cnpm install axios

1.axios配置

我的目录结构src/axios/index.js,axios配置都在该文件下

src/axios/index.js 如下:

import axios from 'axios'
import qs from 'qs'
// axios 配置
axios.defaults.timeout = 5000;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
axios.defaults.baseURL = 'http://localhost:8008';

拦截器,axios.interceptors.request.use发送请求前处理

axios.interceptors.response.use接受返回后,回调之前处理处理

//POST传参序列化
axios.interceptors.request.use((config) => {
 if(config.method === 'post'){
  config.data = qs.stringify(config.data);
 }
 return config;
},(error) =>{
 return Promise.reject(error);
});
//返回状态判断
axios.interceptors.response.use((res) =>{
 if(!res.data.success){
  return Promise.reject(res);
 }
 return res;
}, (error) => {
 //404等问题可以在这里处理
 return Promise.reject(error);
});

公共方法:

export function fetch(url, params) {
 return new Promise((resolve, reject) => {
  axios.post(url, params)
   .then(response => {
    resolve(response.data);
   }, err => {
    reject(err);
   })
   .catch((error) => {
    reject(error)
   })
 })
}

业务方法:

export default {
 getAddressJson() {
  return fetch('/address/',{addressId:1})
 }
}

如果不理解可以将以上代码依次copy到src/axios/index.js文件,当然axios.defaults.baseURL = 'http://localhost:8008'; 需要换成自己的api。

2全局注册axios

为了使用axios,在各个组件中引入就可以使用:

import axios from './axios'

但是使用这种方法我们需要在每一个组件中去引入,有些麻烦,下面我们介绍一种全局注册的方法。

在main.js中:

import axios from './axios'
Vue.prototype.$axios = axios

添加这两行代码,将 axios 改写为 Vue 的原型属性,这样在各个组件中都可以使用axios,具体方法如下:

 submitForm () {
   this.$axios.getAddressJson().then(function (res) {
  //成功之后处理逻辑
    console.log(res)
   },function (res) {
    //失败之后处理逻辑
    console.log("error:"+res)
   })
  }

总结

以上所述是小编给大家介绍的vue axios整合使用全攻略,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Vuex和前端缓存的整合策略详解

    如何存放或更新缓存? 缓存数据来源是预知的,我们可以预先定义哪些 mutation 是缓存相关的. 我们期望这个过程更自然一点,通过某种变化自动映射,使以后不管缓存类别增加还是减少都能修改极少的代码来应对变化. Vuex的插件可以拦截 mutations,借助这个机制,我们可以制定一种策略化的规则. 可以规定,所有需要更新缓存的 mutationType 都要符合这种格式:module-type-cacheKey,非缓存的 mutationType 格式为 module-type. 那么就可以拦

  • vue.js整合vux中的上拉加载下拉刷新实例教程

    前言 Vux 是基于 Vue 和 Weui 开发的手机端页面 UI 组件库,开发初衷是满足公司的微信端表单需求,因为第三方的调查问卷表单系统在手机上实在比较丑(还是 PC 那一套样式适配了大小而已).于是用 vue 重构了表单组件,后来一发不可收拾把其他常用组件也一并开发了. 相比于 React 还是更喜欢用 Vue ,除了目前社区组件不多,周边构建工具还是比较完善的(作者也特别勤奋). 下面话不多说了,来一看看详细的介绍吧. 先上图 创建项目 使用vue-cli 创建一个vue项目 安装vux

  • 详解vue项目首页加载速度优化

    凡是做SPA的项目,特别是移动端的SAP项目,首屏加载速度必定是一个绕不过去的话题.接下来我就我们项目里的一些实践来做一下总结.希望抛砖引玉,如果各位有更好的方案,不吝赐教. 1: 针对第三方js库的优化 我们项目里用到的第三方js库主要有:vue, vue-router, vuex, axio, 我们还用到了qiniu.大家知道这些依赖库的js文件都会被一起打包到vender那个js文件里面,如果这些你的第三方依赖库很多,很大的话,那就会导致vender这个文件很大,那首屏加载的速度肯定会被拖

  • vue.js整合mint-ui里的轮播图实例代码

    初始化vue项目 npm install -g vue-cli vue init webpack demo # 中间会让你选npm yarn 等来安装依赖,我选的是yarn,因为它快些 安装mint-ui yarn add mint-ui mint-ui装好了,还要配置一下babel,方法跟着mint-ui的官方文档来配置就可以了 下面是我配置好的 .babelrc 文件,启动的时候会报跟es2015相关的错,装一下 babel-preset-es2015 就好了 { "presets"

  • 详解Vue整合axios的实例代码

    在vue开发中,不可避免要整合axios,简单记录一下整合中的文件,方便以后使用查找. 整合文件axios.js import axios from 'axios'; // 适配vue-resource const instance = axios.create(); instance.interceptors.request.use(config=> { //Serialize.decode(config); return config; }); instance.interceptors.r

  • Vue开发中整合axios的文件整理

    前言 大家在vue日常开发中,不可避免要整合axios,这里简单记录一下整合中的文件,方便以后使用查找.下面来看看详细的介绍. 整合方法 整合文件axios.js import axios from 'axios'; // 适配vue-resource const instance = axios.create(); instance.interceptors.request.use(config=> { //Serialize.decode(config); return config; })

  • Vue基础学习之项目整合及优化

    前言 使用 webpack 构建过 Vue 项目的同学应该知道 alias 的作用,我们可以使用它将复杂的文件路径定义成一个变量来访问.在不使用 alias 的项目中,我们引入文件的时候通常会去计算被引入文件对于引入它的文件的相对路径,比如像这样 import HelloWorld from '../../../../HelloWorld.vue' 一旦相对层次结构较深,我们就很难去定位所引入文件的具体位置,其实这并不是我们应该操心的地方,完全可以交给 webpack 来进行处理.在原生的 we

  • Vue整合AdminLTE模板的方法

    上一次搞定了登录验证和跳转的问题,不过存在一处bug.在Vue的main.js中,使用了Vue-router的路由钩子来判断是否可以访问受保护的资源,问题就出在这里,先修复上次的bug. /* 全局路由钩子 访问资源时需要验证localStorage中是否存在token 以及token是否过期 验证成功可以继续跳转 失败返回登录页重新登录 */ router.beforeEach((to, from, next) => { if(localStorage.token && new D

  • Vue和Bootstrap的整合思路详解

    ldlood同学推荐 element ui(饿了么基于vue出品)也不错, github地址:https://github.com/ElemeFE/element. 大家也可以关注一下 我是一个刚刚接触前端开发的新手,所以有必要记录如何将Bootstrap和Vue进行整合. 如果你是老手,请直接绕道而过.作为一个新手,里面的步骤,过程或者专业术语未必正确,如果你发现哪里错误了,请发邮件至ztao8607@gmail.com Vue官方不建议新手直接使用vue-cli,但我不这么看. 先使用cli

  • 如何把vuejs打包出来的文件整合到springboot里

    这个需求不知道是不是合适,因为静态的vuejs项目,用nginx部署,听说很快. 一般有这个需求的,都是用tomcat来部署java项目,tomcat转发静态vuejs,应该不会很快. 好吧,以上都是听说...应该...实际嘛?... 废话不多讲,马上搞起. 这里第一句要说的是,目前这个方式我认为只支持#这个方式的路由,如果改成了html5的mode: 'history',应该是不支持的. 开始准备: 注意,我的springboot用的视图模板是thymeleaf,静态文件夹路径默认是resou

随机推荐