vue axios 的使用及碰到的一些问题

2018-6-8 11:07:30 4,265 views

axios

 
由于vue放弃了对vue-resource的维护,并且尤大也推荐使用了axios,以下是我对axios的初步认识。
文档     https://www.kancloud.cn/yunye/axios/234845
 

axios的介绍

从浏览器中创建 XMLHttpRequest
从 node.js 发出 http 请求
支持 Promise API
拦截请求和响应
转换请求和响应数据
取消请求
自动转换JSON数据
客户端支持防止 CSRF/XSRF
因为ie9以下不支持promise,可以使用polyfill 的库,例如 es6-promise。
<script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.js"></script>

Vue中使用axios

安装依赖

cnpm install axios或者npm install axios

 

全局注入

在main.js中引入
import axios from 'axios'
Vue.prototype.$axios=axios;

axios全局配置

axios.defaults.baseURL = "https://wd7026451384ejqwak.wilddogio.com/";
//设置默认地址,后面 this.$axios.get请求时直接用具体的就好了,例如:/user.json
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
//全局设置token
axios.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
//设置post请求头

使用axios碰到的一些问题

axios 跨域报错

axios报错
因为前面全局设置了baseURL,所以这里只需要为/user.json(接口的具体数据)
axios解决
 

解析数据

数据解析
如果数据返回为如上键值对的形式的话,则可以用for in 遍历出来。
看一段具体的代码

this.$axios.get("/user.json").then(res => {
       var data = res.data;
       var users = [];
       //data为一个对象,遍历它所有实例
       for (var key in data) {
         var user = data[key];
         //user为data中所有可以枚举的属性
         users.push(user);
       }
       //实现过滤
       var result = users.filter(item => {
         return item.email === this.email && item.password === this.password;
       });
       if (result !== null && result.length > 0) {
         //更改当前的登录状态
         this.$store.dispatch("setUser", result[0].email);
         this.$router.push({ path: "/" });
       } else {
         alert("用户名或者密码不正确!");
       }
     });

 
真实数据
遍历后获取到的具体数据。

1

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。