Axios JS是什么?如何用它进行高效的HTTP请求?

Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js,它可以用来发送异步 HTTP 请求,包括 GET、POST、PUT、DELETE 等方法,以下是关于 Axios 的详细介绍:

1、安装与导入

安装:使用 npm 或 yarn 安装 Axios。

     npm install axios

或者

     yarn add axios

导入:在 JavaScript 文件中导入 Axios。

     import axios from 'axios';

2、发送请求

GET 请求:发送一个 GET 请求并获取数据。

     axios.get('https://jsonplaceholder.typicode.com/todos/1')
       .then(response => console.log(response.data))
       .catch(error => console.error(error));

POST 请求:发送一个 POST 请求并传递数据。

     axios.post('https://jsonplaceholder.typicode.com/posts', {
       title: 'foo',
       body: 'bar',
       userId: 1,
     })
       .then(response => console.log(response.data))
       .catch(error => console.error(error));

其他请求:Axios 支持 PUT、DELETE 等其他 HTTP 方法。

     // PUT 请求
     axios.put('https://jsonplaceholder.typicode.com/posts/1', {
       body: 'updated body'
     })
       .then(response => console.log(response.data))
       .catch(error => console.error(error));
     // DELETE 请求
     axios.delete('https://jsonplaceholder.typicode.com/posts/1')
       .then(response => console.log(response.data))
       .catch(error => console.error(error));

3、配置请求

全局配置:设置默认的配置项,如 baseURL、timeout 等。

     import axios from 'axios';
     axios.defaults.baseURL = 'https://api.example.com';
     axios.defaults.timeout = 10000;
     axios.defaults.headers.common['Authorization'] = 'Bearer token';

局部配置:在每次请求时传入配置项。

     axios.get('/user/12345', {
       params: { id: 12345 },
       headers: { 'Content-Type': 'application/json' }
     })
       .then(response => console.log(response.data))
       .catch(error => console.error(error));

4、处理响应

成功响应:在.then 方法中处理成功的响应数据。

     axios.get('https://jsonplaceholder.typicode.com/todos/1')
       .then(response => {
         console.log(response.data);
         console.log(response.status);
         console.log(response.headers);
       })
       .catch(error => console.error(error));

错误处理:在.catch 方法中处理请求错误。

     axios.get('https://jsonplaceholder.typicode.com/todos/999')
       .then(response => console.log(response.data))
       .catch(error => {
         if (error.response) {
           console.error('Error Response:', error.response.data);
           console.error('Error Status:', error.response.status);
           console.error('Error Headers:', error.response.headers);
         } else if (error.request) {
           console.error('Error Request:', error.request);
         } else {
           console.error('Error Message:', error.message);
         }
       });

5、拦截器

请求拦截器:在请求发送前进行拦截处理。

     axios.interceptors.request.use(config => {
       console.log('Starting Request', config);
       return config;
     }, error => {
       return Promise.reject(error);
     });

响应拦截器:在响应返回后进行拦截处理。

     axios.interceptors.response.use(response => {
       console.log('Response Data:', response.data);
       return response;
     }, error => {
       return Promise.reject(error);
     });

6、取消请求

取消单个请求:使用CancelToken 来取消请求。

     const CancelToken = axios.CancelToken;
     let cancel;
     axios.get('https://jsonplaceholder.typicode.com/todos/1', {
       cancelToken: new CancelToken(function executor(c) {
         cancel = c;
       })
     })
       .then(response => console.log(response.data))
       .catch(thrown => {
         if (axios.isCancel(thrown)) {
           console.log('Request canceled', thrown.message);
         } else {
           console.error('Error', thrown);
         }
       });
     cancel('Request canceled by the user');

批量取消请求:可以创建一个数组来存储多个CancelToken,然后批量取消。

     const requests = [];
     for (let i = 0; i < 5; i++) {
       const cancelToken = axios.CancelToken.source();
       requests.push({ cancelToken: cancelToken, request: axios.get('https://jsonplaceholder.typicode.com/todos/' + (i + 1), { cancelToken: cancelToken.token }) });
     }
     requests[0].cancelToken.cancel('Batch cancel');

7、并发请求

使用axios.all 方法:同时发送多个请求,并在所有请求完成后统一处理结果。

     function getUserAccount() {
       return axios.get('/user/12345');
     }
     function getUserPermissions() {
       return axios.get('/user/12345/permissions');
     }
     axios.all([getUserAccount(), getUserPermissions()])
       .then(axios.spread((acct, perms) => {
         console.log('Account:', acct.data);
         console.log('Permissions:', perms.data);
       }))
       .catch(error => console.error(error));

使用Promise.all 方法:同样可以实现并发请求。

     Promise.all([axios.get('/user/12345'), axios.get('/user/12345/permissions')])
       .then(([acct, perms]) => {
         console.log('Account:', acct.data);
         console.log('Permissions:', perms.data);
       })
       .catch(error => console.error(error));

8、上传文件

使用 FormData:可以通过FormData 对象上传文件。

     const formData = new FormData();
     formData.append('file', file); // 假设 file 是用户选择的文件对象
     formData.append('name', 'John Doe');
     formData.append('age', 30);
     axios.post('/upload', formData, {
       headers: { 'Content-Type': 'multipart/form-data' }
     })
       .then(response => console.log(response.data))
       .catch(error => console.error(error));

上传多个文件:可以在FormData 中添加多个文件。

     const formData = new FormData();
     formData.append('files[]', file1); // 假设 file1 是用户选择的第一个文件对象
     formData.append('files[]', file2); // 假设 file2 是用户选择的第二个文件对象
     formData.append('description', 'Sample files');
     axios.post('/uploadMultiple', formData, {
       headers: { 'Content-Type': 'multipart/form-data' }
     })
       .then(response => console.log(response.data))
       .catch(error => console.error(error));

上传文件并附带额外数据:可以在FormData 中同时添加文件和其他数据。

     const formData = new FormData();
     formData.append('file', file); // 假设 file 是用户选择的文件对象
     formData.append('username', 'JohnDoe');
     formData.append('age', 30);
     axios.post('/uploadWithAdditionalData', formData, {
       headers: { 'Content-Type': 'multipart/form-data' }
     })
       .then(response => console.log(response.data))
       .catch(error => console.error(error));

上传大文件:可以使用axiosonUploadProgress 事件来处理大文件上传进度。

     const formData = new FormData();
     formData.append('file', file); // 假设 file 是用户选择的文件对象
     formData.append('description', 'Large file upload');
     axios.post('/uploadLargeFile', formData, {
       headers: { 'Content-Type': 'multipart/form-data' },
       onUploadProgress: progressEvent => {
         console.log('Upload Progress:', Math.round(progressEvent.loaded / progressEvent.total * 100) + '%');
       }
     })
       .then(response => console.log(response.data))
       .catch(error => console.error(error));

上传二进制数据:可以直接上传二进制数据。

     const binaryData = new Blob(['Hello World!'], { type: 'text/plain' });
     const formData = new FormData();
     formData.append('file', binaryData, 'hello_world.txt');
     axios.post('/uploadBinary', formData, {
       headers: { 'Content-Type': 'multipart/form-data' }
     })
       .then(response => console.log(response.data))
       .catch(error => console.error(error));

各位小伙伴们,我刚刚为大家分享了有关“axios js”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/655591.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-11-18 12:51
Next 2024-11-18 12:55

相关推荐

  • Async/Await 与 Promise 有何区别?

    Promise和async/await的区别Promise和async/await都是JavaScript中用于处理异步操作的重要工具,但它们在使用方式、语法和适用场景上有一些显著的区别,本文将深入探讨这两种机制的差异,并通过小标题和单元表格的形式进行详细对比,1. 基本概念Promise:Promise是一个……

    2024-11-16
    01
  • Async与Await在编程中究竟解决了哪些关键问题?

    异步编程与async/await在现代JavaScript开发中,异步编程是一个不可或缺的部分,它允许程序在等待某些操作(如网络请求、文件读取等)完成时不阻塞其他代码的执行,从而提高程序的性能和响应速度,本文将详细探讨async和await这两个关键字的用法及其背后的原理,并通过实例和表格来帮助读者更好地理解它……

    2024-11-16
    03
  • 如何简单使用Axios实现小程序延时Loading指示?

    axios简单实现小程序延时loading指示在现代的Web开发中,用户体验是至关重要的一部分,尤其是在微信小程序中,当用户进行网络请求时,适当的Loading提示可以显著提升用户体验,本文将介绍如何通过axios库来实现小程序中的延时Loading指示,一、基本概念与需求分析 Loading指示的重要性Loa……

    帮助中心 2024-11-16
    03
  • 如何使用 await 与 setTimeout 结合进行异步等待?

    在现代 JavaScript 开发中,异步编程已成为日常,理解和掌握异步原语对于编写高效、可维护的代码至关重要,本文将探讨await 和setTimeout 这两个关键概念,通过实例和解释帮助开发者更好地利用它们,一、异步编程基础JavaScript 最初是为浏览器设计的脚本语言,主要用于处理用户交互和页面更新……

    2024-11-17
    02
  • Axios中文文档,如何高效利用这一HTTP客户端库?

    Axios中文文档一、简介Axios 是一个基于Promise的网络请求库,可以用于浏览器和node.js,它以其简洁的API、较小的包尺寸以及易于扩展的接口而广受欢迎,无论是在浏览器中创建XMLHttpRequests,还是在node.js中创建http请求,Axios都能轻松应对,二、基本用例 发起一个GE……

    帮助中心 2024-11-16
    03
  • ddos的三种攻击方式

    关于DDoS攻击方式,你需要了解的三种攻击方式 一、TCP SYN洪水攻击 TCP SYN洪水攻击是最常见和最基本的DDoS攻击方式之一。当一个攻击者向目标服务器发送大量的TCP连…

    行业资讯 2023-09-12
    0688

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入