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 跨域报错
因为前面全局设置了baseURL,所以这里只需要为/user.json(接口的具体数据)
解析数据
如果数据返回为如上键值对的形式的话,则可以用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("用户名或者密码不正确!"); } });
遍历后获取到的具体数据。