vuejs 2 后 作者尤雨溪发布消息,不再继续维护vue-resource,官方推荐大axios。
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
特性:
从浏览器中创建 XMLHttpRequests
从 node.js 创建 http 请求
支持 Promise API
拦截请求和响应
转换请求数据和响应数据
取消请求
自动转换 JSON 数据
客户端支持防御 XSRF
一、安装:
1、 利用npm安装npm install axios --save
2、 利用bower安装bower install axios --save
3、 直接利用cdn引入<script src="https://cdn.bootcss.com/axios/0.18.0/axios.js"></script>
二、使用:
假如你安装了vue脚手架,则在main.js文件中添加如下代码:
然后在组件中可以这样使用了:
说明:
安装其他插件的时候,可以直接在 main.js 中引入并使用 Vue.use()来注册,但是 axios并不是vue插件,所以不能使用Vue.use(),所以只能在每个需要发送请求的组件中即时引入。
为了解决这个问题,我们在引入 axios 之后,通过修改原型链,来更方便的使用。
三、发起POST请求:
四、发起一个GET请求:
携带参数:
或
五、并发请求:一次发起多个请求
处理并发请求的助手函数
六、axios可以通过配置(config)来发送请求:
axios(url[, config])
请求方法的别名
为方便起见,为所有支持的请求方法提供了别名
axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
NOTE
在使用别名方法时, url、method、data 这些属性都不必在配置中指定。
七、当有跨域限制的时候解决方案:
跨域的解决办法有很多,比如script标签 、jsonp、后端设置cros等等...,但是我这里讲的是webpack配置vue 的 proxyTable解决跨域。
这里我请求的地址是 http://www.thenewstep.cn/test/testToken.php
那么在ProxyTable中具体配置如下:
target:就是需要请求地址的接口域名。
这里列举了1种数据请求方式:axios
main.js代码:
axios请求页面代码:
这里的'apis'就是在ProxyTable中配置的'/apis'。
八、创建实例:
可以使用自定义配置新建一个 axios 实例
axios.create([config])
实例:http组件
实例方法
以下是可用的实例方法。指定的配置将与实例的配置合并
axios#request(config)
axios#get(url[, config])
axios#delete(url[, config])
axios#head(url[, config])
axios#post(url[, data[, config]])
axios#put(url[, data[, config]])
axios#patch(url[, data[, config]])
请求配置
这些是创建请求时可以用的配置选项。只有 url 是必需的。如果没有指定 method,请求将默认使用 get 方法。
响应结构
某个请求的响应包含以下信息
使用 then 时,你将接收下面这样的响应:
在使用 catch 时,或传递 rejection callback 作为 then 的第二个参数时,响应可以通过 error 对象可被使用,正如在错误处理这一节所讲。
配置的默认值/defaults
你可以指定将被用在各个请求的配置默认值
全局的 axios 默认值
自定义实例默认值
配置的优先顺序
配置会以一个优先顺序进行合并。这个顺序是:在 lib/defaults.js 找到的库的默认值,然后是实例的 defaults 属性,最后是请求的 config 参数。后者将优先于前者。这里是一个例子:
九、拦截器:
1、发送之前可以对请求进行拦截,还可以拦截响应,类似中间件。你可以在请求、响应在到达then/catch之前拦截他们。
2、取消拦截器:
3、 给自定义的axios实例添加拦截器:
十、错误处理:
可以使用 validateStatus 配置选项定义一个自定义 HTTP 状态码的错误范围。
十一、取消
使用 cancel token 取消请求
Axios 的 cancel token API 基于cancelable promises proposal,它还处于第一阶段。
可以使用 CancelToken.source 工厂方法创建 cancel token,像这样:
还可以通过传递一个 executor 函数到 CancelToken 的构造函数来创建 cancel token:
Note : 可以使用同一个 cancel token 取消多个请求
十一、将axios定义在一个单独的文件中:
http.js
在main.js中引入http,并修改原型链方便使用(同上面的第二大点)
这样,就可以在任何地方使用了:
Table.vue