Open wanlixi opened 7 years ago
因为vue 2.x开始已经废除了vue-resource,当然我们常用的接口拦截器也就没有了,所以我们需要替代方案,本文选用的是 axios,axios是npm里面的一个包
npm i --save axios
ES6: import axios from 'axios' requirejs: var axios = require('axios')
// 基础url,假设请求的不是绝对路径,如:http://xxx.com/api/user/account,则向服务器请求的路径是 // baseURL+url #### 全局配置axios axios.default.baseURL="localhost:8888" // 请求超时时间 axios.default.timeout = 5000 // 发送自定义Headers头文件,头文件中包含了http请求的各种信息 axios.default.headers[”post“] = “application/x-www-form-urlencoded;charset='UTF-8'"
如果是POST的请求,配置中可不能用 params 字段了,需要使用 data 字段。 这里有个小地方需要注意,POST的传参需要序列化,不然服务端不会正确的接收哦,会报错。所以这里我们要对request的数据进行一次序列化。这里我用了 qs ,大家需要install一下
import axios from 'axios' import qs frm 'qs' // 请求统一处理 axios.interceptors.request.use(config => { if (config.method == 'post' ) { config.data = qs.stringify(config.data) } return config }, err => { return Promise.reject(err) }) // 返回统一处理 axios.interceptor.response.use(res => { if (res.code !== 200) { return Promise.rejecet(res) } return res },err => { return Promise.reject(err) })
因为这里我使用的 Promise ,所以在安卓4.4.3一下的手机还是不支持Promise的,所以会报错。需要引入 npm install babel-polyfill 和 npm install babel-runtime ,在入口文件上加上即可。
下载方法:
使用方法:
关于axios的配置 (查看完整配置):
interceptors 拦截器
如果是POST的请求,配置中可不能用 params 字段了,需要使用 data 字段。 这里有个小地方需要注意,POST的传参需要序列化,不然服务端不会正确的接收哦,会报错。所以这里我们要对request的数据进行一次序列化。这里我用了 qs ,大家需要install一下
注意:
因为这里我使用的 Promise ,所以在安卓4.4.3一下的手机还是不支持Promise的,所以会报错。需要引入 npm install babel-polyfill 和 npm install babel-runtime ,在入口文件上加上即可。