axios 使用
更新记录
点击查看
2024年2月28日 优化并迁移。
官网
安装
npm install axios
使用格式
axios.method({configs})
.then(function(response){
//
})
.catch(function (error) {
// handle error
console.log(error);
})
.finally(function () {
// always executed
});
axios
函数
axios(config)
axios(url[, config])
实例:
// Send a POST request
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
});
别名请求方法
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]])
axios.postForm(url[, data[, config]])
axios.putForm(url[, data[, config]])
axios.patchForm(url[, data[, config]])
config 支持的参数:https://axios-http.com/docs/req_config
HTTP GET
axios.get('/user?ID=12345', {
params: {
ID: 12345
}
})
.then(function (response) {
// handle success
console.log(response);
})
.catch(function (error) {
// handle error
console.log(error);
})
.finally(function () {
// always executed
});
HTTP POST
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
HTTP POST multipart
const {data} = await axios.post('https://httpbin.org/post', {
firstName: 'Fred',
lastName: 'Flintstone',
orders: [1, 2, 3],
photo: document.querySelector('#fileInput').files
}, {
headers: {
'Content-Type': 'multipart/form-data'
}
}
)
支持的请求参数
config 支持的参数:https://axios-http.com/docs/req_config
优先级:请求配置 > 实例配置 > 全局配置
返回的数据格式(Response Schema)
https://axios-http.com/docs/res_schema
默认配置(Config Defaults)
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
处理错误(Handling Errors)
axios.get('/user/12345')
.catch(function (error) {
if (error.response) {
// The request was made and the server responded with a status code
// that falls out of the range of 2xx
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
} else if (error.request) {
// The request was made but no response was received
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
// http.ClientRequest in node.js
console.log(error.request);
} else {
// Something happened in setting up the request that triggered an Error
console.log('Error', error.message);
}
console.log(error.config);
});
拦截器(Interceptors)
官方文档:https://axios-http.com/docs/interceptors
请求拦截器
// Add a request interceptor
axios.interceptors.request.use(function (config) {
// Do something before request is sent
return config;
}, function (error) {
// Do something with request error
return Promise.reject(error);
});
响应拦截器
// Add a response interceptor
axios.interceptors.response.use(function (response) {
// Any status code that lie within the range of 2xx cause this function to trigger
// Do something with response data
return response;
}, function (error) {
// Any status codes that falls outside the range of 2xx cause this function to trigger
// Do something with response error
return Promise.reject(error);
});
取消请求
官方文档:https://axios-http.com/docs/cancellation
取消单个请求
const CancelToken = axios.CancelToken;
let cancel;
axios.get('/user/12345', {
cancelToken: new CancelToken(function executor(c) {
// An executor function receives a cancel function as a parameter
cancel = c;
})
});
// cancel the request
cancel();
取消多个请求
const CancelToken = axios.CancelToken;
let cancel1;
let cancel2;
axios.get('/abc.pdf', {
timeout:50000,
cancelToken: new CancelToken(function executor(c) {
// An executor function receives a cancel function as a parameter
cancel1 = c;
})
});
axios.get('/abc.pdf', {
timeout:50000,
cancelToken: new CancelToken(function executor(c) {
// An executor function receives a cancel function as a parameter
cancel2 = c;
})
});
// cancel the request
cancel1();
cancel2();
Async
// Want to use async/await? Add the `async` keyword to your outer function/method.
async function getUser() {
try {
const response = await axios.get('/user?ID=12345');
console.log(response);
} catch (error) {
console.error(error);
}
}
等待任务全部完成
function getUserAccount() {
return axios.get('/user/12345');
}
function getUserPermissions() {
return axios.get('/user/12345/permissions');
}
const [acct, perm] = await Promise.all([getUserAccount(), getUserPermissions()]);
// 或者
Promise.all([getUserAccount(), getUserPermissions()])
.then(function ([acct, perm]) {
// ...
});
本文来自博客园,作者:重庆熊猫,转载请注明原文链接:https://www.cnblogs.com/cqpanda/p/17306297.html