vue调用后端接口——axios和vue-axios的使用

vue本身不支持发送AJAX请求,需要使用vue-resource、axios等插件实现 axios是一个基于Promise的HTTP请求客户端,用来发送请求,也是vue2.0官方推荐的,同时不再对vue-resource进行更新和维护 参考:GitHub上搜索axios,查看API文档:https://github.com/axios/axios

axios和vue-axios区别

1、axios是基于promise的HTTP库,可以使用在浏览器和node.js中,它不是vue的第三方插件 2、axios使用的时候不能像vue的插件(如:Vue-Router、VueX等)通过Vue.use()安装插件,需要在原型上进行绑定:Vue.prototype.$axios = axios; 3、vue-axios是axios集成到Vue.js的小包装器,可以像插件一样安装:Vue.use(vueAxios);

注意: 使用vue的插件的写法(vue-axios)更符合vue整体的生态环境,直接写原型链会有些粗暴,且直接写原型链你取名为$http,你的项目成员可能取另外的名字,维护起来比较麻烦,而统一使用vue-axios就没有太多歧义

axios的使用

安装

输入命令
# 安装axios
npm install axios -S

引入

修改main.js文件
import Vue from vue
import ElementUI from element-ui;
import element-ui/lib/theme-chalk/index.css;
import App from ./App.vue
import axios from axios

Vue.use(ElementUI);
Vue.use(axios);
Vue.config.productionTip = false

new Vue({
          
   
  render: h => h(App),
}).$mount(#app)

使用

1.执行get请求
axios.get(/user, {
          
   
    params: {
          
   
      ID: 12345
    }
  })
  .then(function (response) {
          
   
    console.log(response);
  })
  .catch(function (error) {
          
   
    console.log(error);
  });
2.执行 post请求
axios.post(/user, {
          
   
    firstName: Fred,
    lastName: Flintstone
  })
  .then(function (response) {
          
   
    console.log(response);
  })
  .catch(function (error) {
          
   
    console.log(error);
  });
3.执行多个并发请求
function getUserAccount() {
          
   
  return axios.get(/user/12345);
}

function getUserPermissions() {
          
   
  return axios.get(/user/12345/permissions);
}

axios.all([getUserAccount(), getUserPermissions()])
  .then(axios.spread(function (acct, perms) {
          
   
    // 两个请求现在都执行完成
  }));

vue-axios的使用

安装

# 安装axios
npm install axios -S  
# 安装vue-axios
npm install --save axios vue-axios

引入

修改main.js文件
import Vue from vue
import ElementUI from element-ui;
import element-ui/lib/theme-chalk/index.css;
import App from ./App.vue
import axios from axios
import VueAxios from vue-axios

Vue.use(ElementUI);
Vue.use(VueAxios, axios);
Vue.config.productionTip = false

new Vue({
          
   
  render: h => h(App),
}).$mount(#app)

使用

用法1:

Vue.axios.get(url,{
          
   params:userId:1}).then(res => {
          
   }).catch(err => {
          
   });

用法2:

this.axios.get(url,{
          
   params:userId:1}).then(res => {
          
   }).catch(err => {
          
   });

用法3:

this.$http.get(url,{
          
   params:userId:1}).then(res => {
          
   }).catch(err => {
          
   });
经验分享 程序员 微信小程序 职场和发展