vue2项目使用axios发送请求

项目中安装axios

cnpm install axios -S

每个需要请求的组件中都需要引入axios,如果觉得麻烦,可以axios改写成Vue的原型属性,在使用的时候,就不需要每个组件都去引用。

将axios改写成Vue的原型属性

1、在main.js中引入axios

      import axios from 'axios'

2、写成vue的原型属性

  Vue.prototype.$ajax = axios

在main.js中添加这两行代码之后,就能直接在组件中使用axios了

 

使用方式

this.$ajax.post(url,params).then(function (response) {
  //请求成功
}).catch(function (error) {
  //请求失败
});

实际应用

假设我们需要请求的接口是:**************

如果是开发环境,我们请求的接口如果存在跨域问题,需要配置代理

在vue-cli的config文件下面的index.js里有一个参数叫proxyTable

配置proxyTable的时候本地会虚拟一个服务端接收你的请求并代你发送该请求,这样就不会有跨域问题了,当然这只适用于开发环境。

 

具体配置代码:

// 配置代理 

proxyTable: {
     '/apis':{// ‘/apis’的别名
         target:'http://120.**.**.**:**',//target指的是要代理的url 
         changeOrigin:true, //是否跨域
        pathRewrite:{
             '^/apis':'' //需要rewrite重写
        }
    }
}

 

组件中请求的具体代码:

this.$ajax.post('/apis/*********', qs.stringify({
  //这里是传参数
})).then(function (response) {
  console.log(response)
}).catch(function (error) {
  console.log(error);
});

 

 

注意

在vue2中使用axios,我们请求的参数仍为json类型,是并没有序列化的。我们需要使用querystring解决该问题

需要先引入  import qs from 'qs';

传入参数的时候转下格式,qs.stringify(data)

这样,我们就能正常请求访问到数据了。

生成环境下,生产代码应该使用npm run build然后把dist放到nginx服务器上,在nginx上配置代理地址。

猜你喜欢

转载自blog.csdn.net/weidong32768/article/details/80251164