《vue-router与Axios请求》

216 阅读1分钟
  • 定义:Axios是一个基于promise 的 HTTP 库,可以用在浏览器和 node.js中。
  • 原理:Axios本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范。

1、安装Axios

yarn add axios

2、引入axios依赖

import axios from 'axios'

3、将axios全局挂载到Vue原型上

Vue.prototype.$http = axios;

4、发出请求get 以cnode社区API为例子

使用传统function

<script>
      //$zhou自定义
Vue.prototype.$zhou = axios;
import axios from 'axios';
import Vue from 'vue';
export default {
  name: 'HelloWorld',
  data() {
    return {
      items: []
    }
  },
  methods: {
    getData() {
      var self = this;
      this.$zhou.get('https://cnodejs.org/api/v1/topics')//绝对路径
        .then(function (e) {
        //箭头函数.then(e=>){this.items = e.data.data;}
          self.items = e.data.data;
          console.log(e.data.data);
        })
        .catch(function (err) {
          console.log(err);
        })
    }

  }
}
</script>

两种加参数的请求方式

this.$zhou.get('https://cnodejs.org/api/v1/topics', {
        params: {
          page: 1,
          limit: 10
        }
      })
 =============================================
 this.$zhou.get('https://cnodejs.org/api/v1/topics? page=1&limit=10')

使用CNODE社区官方的API为例展开学习

获取主题列表API:cnodejs.org/api/v1/topi…

参数:page页码

limit 每页显示的数量

5、Axios之post请求详解

postData() {

    this.$zhou.post(url, qs.stringify({
      page: 1,
      limit: 20
    }))
      .then(e => {
        this.items = e.data.data;
        console.log(e.data.data);
      })
      .catch(function (err) {
        console.log(err);
      })
  
}

POST传递数据有两种格式:

form-data ?page=1&limit=48

x-www-form-urlencoded { page: 1,limit: 10 }

在axios中,post请求接收的参数必须是form-data

使用qs插件—qs.stringify