马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
1.简介:
Axios 是一个基于 Promise 的当代化 HTTP 客户端库,广泛用于欣赏器和 Node.js 环境中发送 HTTP 哀求。它的计划目的是简化前后端数据交互,提供更高效、更易用的 API。
2.Axios 的焦点作用
- 发送 HTTP 哀求
支持全部常见哀求方法(GET、POST、PUT、DELETE 等),并主动处置惩罚哀求参数和相应数据。
- 拦截哀求和相应
可以在哀求发送前或相应返回后添加同一的处置惩罚逻辑(比方添加认证 Token、同一处置惩罚错误)。
- 数据转换
主动将哀求数据转换为 JSON 格式(或自界说格式),并将相应数据(如 JSON)主动转换为 JavaScript 对象。
- 取消哀求
提供取消哀求的机制,制止不须要的网络哀求(比方用户频仍利用时取消旧哀求)。
- 客户端防御 XSRF
支持跨站哀求伪造(XSRF)防护,主动在哀求头中添加安全根据。
- 上传/下载进度监控

支持监听文件上传和下载的进度。
3.发送哀求
1. GET 哀求
- // 基本 GET
- axios.get('https://api.example.com/data')
- .then(response => console.log(response.data))
- .catch(error => console.error(error));
- // 带 URL 参数
- axios.get('https://api.example.com/data', {
- params: {
- id: 123,
- page: 2
- }
- });
- // 使用 async/await
- async function fetchData() {
- try {
- const response = await axios.get('https://api.example.com/data');
- console.log(response.data);
- } catch (error) {
- console.error(error);
- }
- }
复制代码 2. POST 哀求
- axios.post('https://api.example.com/users', {
- name: 'John',
- age: 30
- })
- .then(response => console.log('创建成功:', response.data))
- .catch(error => console.error('创建失败:', error));
复制代码 3. 其他哀求方法
- axios.put('https://api.example.com/users/1', { name: 'Alice' });
- axios.delete('https://api.example.com/users/1');
- axios.patch('https://api.example.com/users/1', { age: 31 });
复制代码 4.Axios 设置
1. 全局默认设置- axios.defaults.baseURL = 'https://api.example.com';
- axios.defaults.headers.common['Authorization'] = 'Bearer token';
- axios.defaults.timeout = 5000; // 5秒超时
复制代码 2. 单个哀求设置
- axios.get('/data', {
- params: { id: 123 }, // URL 参数
- headers: { 'X-Custom-Header': 'value' }, // 自定义请求头
- timeout: 3000, // 单独设置超时时间
- responseType: 'json' // 响应数据类型(默认json)
- });
复制代码 5.处置惩罚相应
1. 相应数据布局- {
- data: {}, // 服务器返回的数据
- status: 200, // HTTP 状态码
- statusText: 'OK',
- headers: {}, // 响应头
- config: {} // 请求的配置信息
- }
复制代码 2. 提取数据
- axios.get('/data')
- .then(response => {
- const data = response.data;
- const status = response.status;
- });
复制代码 6.错误处置惩罚
1. 捕获 HTTP 错误状态码(4xx/5xx)- axios.get('/data')
- .catch(error => {
- if (error.response) {
- // 服务器返回了错误状态码
- console.log('状态码:', error.response.status);
- console.log('错误数据:', error.response.data);
- } else if (error.request) {
- // 请求已发送但无响应
- console.log('无响应:', error.request);
- } else {
- // 其他错误(如配置错误)
- console.log('错误信息:', error.message);
- }
- });
复制代码 2. 全局错误拦截
- axios.interceptors.response.use(
- response => response,
- error => {
- if (error.response.status === 404) {
- alert('资源不存在!');
- }
- return Promise.reject(error);
- }
- );
复制代码 7.高级功能
1. 并发哀求
- const request1 = axios.get('/data1');
- const request2 = axios.get('/data2');
- axios.all([request1, request2])
- .then(axios.spread((res1, res2) => {
- console.log(res1.data, res2.data);
- }));
复制代码 2. 取消哀求
- const controller = new AbortController();
- axios.get('/data', {
- signal: controller.signal
- }).catch(error => {
- if (axios.isCancel(error)) {
- console.log('请求被取消:', error.message);
- }
- });
- // 取消请求
- controller.abort('用户取消操作');
复制代码 3. 自界说实例
- const api = axios.create({
- baseURL: 'https://api.example.com',
- timeout: 5000
- });
- api.get('/users'); // 使用自定义实例
复制代码 8.文件上传
- const formData = new FormData();
- formData.append('file', fileInput.files[0]);
- axios.post('/upload', formData, {
- headers: {
- 'Content-Type': 'multipart/form-data'
- },
- onUploadProgress: progressEvent => {
- const percent = Math.round((progressEvent.loaded / progressEvent.total) * 100);
- console.log(`上传进度: ${percent}%`);
- }
- });
复制代码 |