axios: 是一个类库,基于Promise管理的Ajax库,支持浏览器和nodejs的http库,经常使用于Ajax请求。node
特色 从浏览器中建立 XMLHttpRequests 从 node.js 建立 http 请求 支持 Promise API 拦截请求和响应 转换请求数据和响应数据 取消请求 自动转换 JSON 数据 客户端支持防护 XSRFios
安装方法npm
使用 npm:axios
$ npm install axios
复制代码
使用 bower:api
$ bower install axios
复制代码
使用 cdn:浏览器
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
复制代码
axios提供了多种请求方式,好比直接发起get或post请求:bash
执行get请求服务器
// 为给定 ID 的 user 建立请求
axios.get('/user?ID=12345')
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
// 可选地,上面的请求能够这样作
axios.get('/user', {
params: {
ID: 12345
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
复制代码
在get请求中的键值对拼接成URLENCODED式的字符串而后1以问号传递参数的方式,传递给服务器。并发
执行post请求app
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
复制代码
基于Promise,能够执行多个并发请求:
function getUserAccount() {
return axios.get('/user/12345');
}
function getUserPermissions() {
return axios.get('/user/12345/permissions');
}
axios.all([getUserAccount(), getUserPermissions()])
.then(axios.spread(function (acct, perms) {
// 请求如今都执行完成时
}));
复制代码
也能够经过写入配置的形式发起请求: axios(config)
// 发送 POST 请求
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
})
.then(function(res) {
console.log(res)
});
复制代码
在业务中,常常将其封装成为实例的形式调用,便于作通用配置, 例如:
//util.js
const instance = axios.create({
baseURL: 'http://some-domain.com/api',
timeout: 1000,
header: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
export default instance
复制代码
index.js
<tempalte>
<div></div>
</template>
<script>
import Ajax from './util.js'
export default {
created(): {
Ajax ( {
method: 'post',
url: '/user',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
}).then(res => {
console.log(res)
})
}
}
</script>
复制代码
请求方法的别名
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、data 这些属性都没必要在配置中指定。
并发
处理并发请求的助手函数
axios.all(iterable) axios.spread(callback)
建立实例 能够使用自定义配置新建一个 axios 实例
axios.create([config])
var instance = axios.create({
baseURL: 'https://some-domain.com/api/',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
});
复制代码
更多关于axios的配置请参考: www.kancloud.cn/yunye/axios…