Axios 的使用方法

简介: Axios 的使用方法

Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js。它的特点包括支持浏览器和 Node.js、支持 Promise API、自动转换 JSON 数据、拦截请求和响应等。下面从入门到进阶,介绍 Axios 的使用方法:

 

入门

 

1. **安装 Axios:** 可以使用 npm 安装 Axios:

 

```bash
   npm install axios
   ```

 

2. **发起 GET 请求:**

 

```javascript
   const axios = require('axios');
 
   // 发起 GET 请求
   axios.get('https://api.example.com/data')
     .then(response => {
       console.log(response.data);
     })
     .catch(error => {
       console.error(error);
     });
   ```

 

进阶

 

1. **发起 POST 请求:**

 

```javascript
   // 发起 POST 请求
   axios.post('https://api.example.com/data', {
       name: 'John Doe',
       age: 30
     })
     .then(response => {
       console.log(response.data);
     })
     .catch(error => {
       console.error(error);
     });
   ```

 

2. **使用 async/await:**

 

```javascript
   async function fetchData() {
     try {
       const response = await axios.get('https://api.example.com/data');
       console.log(response.data);
     } catch (error) {
       console.error(error);
     }
   }
 
   fetchData();
   ```

 

3. **拦截器(Interceptors):** 可以在请求或响应被 then 或 catch 处理之前拦截它们。

 

```javascript
   // 添加请求拦截器
   axios.interceptors.request.use(config => {
     // 在发送请求之前做些什么
     return config;
   }, error => {
     // 对请求错误做些什么
     return Promise.reject(error);
   });
 
   // 添加响应拦截器
   axios.interceptors.response.use(response => {
     // 对响应数据做点什么
     return response;
   }, error => {
     // 对响应错误做点什么
     return Promise.reject(error);
   });
   ```

 

4. **取消请求:** 可以使用 CancelToken 取消请求。

 

```javascript
   const CancelToken = axios.CancelToken;
   const source = CancelToken.source();
 
   axios.get('https://api.example.com/data', {
       cancelToken: source.token
     })
     .then(response => {
       console.log(response.data);
     })
     .catch(error => {
       if (axios.isCancel(error)) {
         console.log('Request canceled', error.message);
       } else {
         console.error(error);
       }
     });
 
   // 取消请求
   source.cancel('Operation canceled by the user.');
   ```

 

5. **自定义实例:** 可以创建一个自定义的 Axios 实例来设置默认配置。

 

```javascript
   const instance = axios.create({
     baseURL: 'https://api.example.com/',
     timeout: 1000,
     headers: {'X-Custom-Header': 'foobar'}
   });
 
   instance.get('data')
     .then(response => {
       console.log(response.data);
     })
     .catch(error => {
       console.error(error);
     });
   ```

 

通过以上入门到进阶的介绍,我们可以初步了解如何使用 Axios 发起 HTTP 请求,并掌握一些高级用法。继续实践和探索,可以帮助我们更好地应用 Axios 来处理网络请求。

 

除了基本的 GET 和 POST 请求外,Axios 还支持许多其他功能和用法,以下是一些额外的补充:

 

1. **设置默认配置:** 可以使用 `axios.defaults` 对象设置默认配置,这样在发起请求时不必重复指定相同的配置参数。

 

```javascript
   axios.defaults.baseURL = 'https://api.example.com/';
   axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
   axios.defaults.headers.post['Content-Type'] = 'application/json';
   ```

 

2. **并发请求:** 使用 `axios.all` 和 `axios.spread` 可以处理并发请求和处理多个响应。

 

 

```javascript
   axios.all([
     axios.get('/user/12345'),
     axios.get('/user/54321')
   ])
   .then(axios.spread((user1, user2) => {
     console.log('User 1', user1.data);
     console.log('User 2', user2.data);
   }));
   ```

 

3. **实例方法:** 除了使用默认的全局 Axios 实例外,还可以创建多个自定义实例来分别处理不同的请求。

 

```javascript
   const instance1 = axios.create({
     baseURL: 'https://api.example.com/',
     timeout: 1000,
     headers: {'X-Custom-Header': 'foobar'}
   });
 
   const instance2 = axios.create({
     baseURL: 'https://api.example.com/',
     timeout: 2000,
     headers: {'X-Custom-Header': 'baz'}
   });
   ```

 

4. **请求和响应转换:** 可以通过自定义函数对请求和响应进行转换,例如对请求数据进行格式化或对响应数据进行解析。

 

```javascript
   axios.interceptors.request.use(request => {
     // 修改请求数据
     return request;
   }, error => {
     return Promise.reject(error);
   });
 
   axios.interceptors.response.use(response => {
     // 修改响应数据
     return response;
   }, error => {
     return Promise.reject(error);
   });
   ```

 

5. **错误处理:** 可以全局捕获所有请求的错误,并统一处理。

 

```javascript
   axios.interceptors.response.use(response => {
     return response;
   }, error => {
     // 统一处理错误
     return Promise.reject(error);
   });
   ```

 

6. **取消重复请求:** 可以使用 Axios CancelToken 来取消重复的请求。

 

```javascript
   const CancelToken = axios.CancelToken;
   const source = CancelToken.source();
 
   axios.get('/data', {
     cancelToken: source.token
   }).catch(thrown => {
     if (axios.isCancel(thrown)) {
       console.log('Request canceled', thrown.message);
     } else {
       // 处理错误
     }
   });
 
   // 取消请求
   source.cancel('Operation canceled by the user.');
   ```

 

通过这些额外的补充,我们可以更好地利用 Axios 的功能和特性来处理各种复杂的请求场景,并更好地应用于实际项目中。

目录
相关文章
|
11月前
|
前端开发
react axios 的使用方法
react axios 的使用方法
|
JavaScript 数据安全/隐私保护
Vue 3 axios配置以及cookie的使用方法
Vue 3 axios配置以及cookie的使用方法
595 0
|
JavaScript 前端开发 API
VUE axios使用方法与跨域问题解决
'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
21106 0
|
1月前
|
JavaScript
vue封装axios(用interceptors封装)
vue封装axios(用interceptors封装)
24 0
|
1月前
|
JSON 前端开发 JavaScript
3分钟让你学会axios在vue项目中的基本用法(建议收藏)
3分钟让你学会axios在vue项目中的基本用法(建议收藏)
243 0
|
1月前
|
XML JavaScript 前端开发
axios如何在vue中使用
axios如何在vue中使用
40 1
|
2天前
|
JavaScript
vue对axios封装
vue对axios封装
12 2
|
2天前
|
存储 JSON 自然语言处理
SSMP整合案例交互之在idea中利用vue和axios发送异步请求进行前后端调用
SSMP整合案例交互之在idea中利用vue和axios发送异步请求进行前后端调用
7 2
|
2天前
|
JavaScript 前端开发 Java
vue使用axios与springboot通讯
vue使用axios与springboot通讯
7 0
|
1月前
|
前端开发 JavaScript
1天搞定SpringBoot+Vue全栈开发 (7)Axios网络请求
1天搞定SpringBoot+Vue全栈开发 (7)Axios网络请求