Axios
Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。
服务器端
使用json-server
1. axios基本使用
// 1.GET
axios({
method: 'GET',
url: 'http://localhost:3000/posts/2'
}).then(res => {
console.log(res);
})
// POST
axios({
method: 'POST',
url: 'http://localhost:3000/posts',
data: {
title: 'test',
author: 'lll'
}
}).then(res => {
console.log(res);
})
// PUT
axios({
method: 'PUT',
url: 'http://localhost:3000/posts/3',
data: {
title: 'test',
author: 'new-lll'
}
}).then(res => {
console.log(res);
})
// DELETE
axios({
method: 'DELETE',
url: 'http://localhost:3000/posts/3',
}).then(res => {
console.log(res);
})
2. 其他请求方法
axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.options(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
// request
axios.request({
method: 'GET',
url: 'http://localhost:3000/posts/2'
}).then(res => {
console.log(res)
})
// POST
axios.post(
'http://localhost:3000/comments',
{
"body": "other",
"postId": 2
}
).then(res => {
console.log(res)
})
3. axios默认配置
// default setting
axios.defaults.method = 'GET'
axios.defaults.baseURL = 'http:localhost:3000'
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
4. axios创建实例对象
// 创建实例对象
const obj = axios.create({
baseURL: 'http://localhost:3000'
})
// obj实例和axios对象几乎相同
obj({
url: 'posts/2'
}).then(res => {
console.log(res)
})
5. axios拦截器
/**
* 拦截器实质是函数
* 请求拦截器,在请求发出时检查请求的参数等是否正确
* 响应拦截器,在接受响应前,对响应进行预处理
*/
// 请求拦截器
axios.interceptors.request.use(functio(config) {
console.log('req success')
return config
}), function (error) {
console.log('req fail')
return Promise.reject(error)
}
// 接收拦截器
axios.interceptors.response.use(functio(response) {
console.log('res success')
return response;
}, function (error) {
console.log('res fail')
return Promise.reject(error);
});
6. 取消请求
let cancel = nul
btns[0].onclick = function () {
// 检查上一个请求是否结束
if (cancel !== null) {
cancel()
}
axios({
url: '/posts',
cancelToken: new axios.CancelTok(function executor(c) {
cancel = c;
})
}).then(res => {
cancel = null
console.log(res)
})
btns[1].onclick = function () {
cancel()
}