Axios 是一个基于 promise 的 HTTP 库,能够用在浏览器和 node.js 中。前端
我在作Spring Boot+Vue先后端分离项目的时候,是使用了这个库进行的先后端对接。
这个东西很简单,它的使用说明文档也很短小精悍,而我在这也不是想把它所有介绍一遍,只是记下我在项目中使用到的部分。node
使用文档连接ios
安装有三种途径:npm
$ npm install axios
复制代码
$ bower install axios
复制代码
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
复制代码
前端向后端发送请求axios
axios提供了全部它所支持的请求方法的别名,能够直接用,诸如:
axios.get(url[, config])
axios.post(url[, data[, config]])
。。。。。。
参数能够不用指定,但我在这使用了axios提供的接口 axios(config),本身定义了配置后端
export const postKeyValueRequest = (url, params) => {
return axios({
// `method` 是建立请求时使用的方法
method: 'post',
// `url` 是用于请求的服务器 URL
url: `${base}${url}`,
// `data` 是做为请求主体被发送的数据
data: params,
// `transformRequest` 容许在向服务器发送前,修改请求数据,只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法,后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 Stream
transformRequest: [function (data) {
let ret = ''
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret
}],
// `headers` 是即将被发送的自定义请求头
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
}
复制代码
=> 是 箭头函数,不了解的能够点击连接数组
我本身的请求到此就配置好了一个,以后能够配置多个方法进行调用。不过请求的配置还有许多属性,有需求的能够本身去看看promise
前端接收后端响应的请求浏览器
一个response的相应数据结构以下:bash
{
// `data` 由服务器提供的响应
data: {},
// `status` 来自服务器响应的 HTTP 状态码
status: 200,
// `statusText` 来自服务器响应的 HTTP 状态信息
statusText: 'OK',
// `headers` 服务器响应的头
headers: {},
// `config` 是为请求提供的配置信息
config: {}
}
复制代码
能够经过then或catch接收,写法以下:
axios.get('/user/12345')
.then(function(response) {
console.log(response.data);
});
复制代码
拦截器在request发送前,还有response接受前拦截,语法以下:
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求以前作些什么
return config;
}, function (error) {
// 对请求错误作些什么
return Promise.reject(error);
});
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
// 对响应数据作点什么
return response;
}, function (error) {
// 对响应错误作点什么
return Promise.reject(error);
});
复制代码