本文共 2465 字,大约阅读时间需要 8 分钟。
Axios 是一款基于 Promise 的异步请求库,支持在浏览器和 Node.js 中发送 HTTP 请求。它主要基于 XMLHttpRequest(XHR)封装,通过支持 Promise API 提供更简便的异步操作接口。Axios 的核心特点是支持拦截器(interceptors),可以自定义请求和响应的处理逻辑,同时支持多请求发起,以及取消请求功能。
Axios 提供多种方法来发起 HTTP 请求,包括 GET、POST、PUT、DELETE、PATCH 和 HEAD 等。无论是通过直接调用还是通过配置选项发起,开发者都可以灵活设置请求参数。
import axios from 'axios'//_browser commentary_// 示例 1:GET 请求axios.get('/user?ID=12345')// 示例 2: POST 请求axios.post('/user', { firstName: 'simon', lastName: 'li' })// 示例 3:并发请求const get1 = axios.get('/user/12345')const get2 = axios.get('/user/12345/permission')axios.all([get1, get2]) .then((results) => console.log(results)) .catch(err => console.log(err)) Axios支持通过配置对象或者实例化后续对调请求,主要配置选项包括:
baseURL。baseURL。通过 axios.create 创建一个新的实例,支持自定义默认设置:
const instance = axios.create({ baseURL: 'http://localhost:3000/api', timeout: 2000, headers: { 'X-Custom-Header': 'foobar' }})// 使用实例发起请求instance.get('/user', { params: { ID: 12345 }}) Axios 提供请求拦截器和响应拦截器,用于在请求/响应处理前后自定义逻辑。
axios.interceptors.request.use(config => { // 做一些预处理逻辑 return config}, err => { // 处理请求错误 return Promise.reject(err)}) axios.intercepts.response.use(response => { // 处理响应数据 return response}, err => { // 处理响应错误 return Promise.reject(err)}) 通过 validateStatus 选项可以自定义处理 HTTP 状态码:
axios.get('/user/12345', { validateStatus: status => status < 500 // 只处理状态码小于 500 的错误}) const CancelToken = axios.CancelToken// 创建取消 tokenconst source = CancelToken.source()// 发起请求并传递 cancelTokenaxios.get('/user/12345', { cancelToken: source}).catch(err => { if (axios.isCancel(err)) { console.log('请求被取消') } // 处理其他错误}) 如需更详细的功能介绍,可参考 Axios 官方文档。
转载地址:http://uyrmz.baihongyu.com/