您的位置:

使用axios的async/await,轻松发起网络请求

在现代web应用中,我们经常需要与后端进行数据交互;为了实现这一目的,我们通常会使用AJAX(Asynchronous JavaScript and XML)技术来向web服务器发送请求。在AJAX技术中,我们通常会使用XMLHttpRequest进行请求的发送。

然而,如果我们要手写AJAX,就会涉及到一些复杂的代码;而这种代码的书写和维护都是非常复杂的。因此,我们通常使用某个web框架来处理这些请求。这里,我们介绍的是使用axios得到这个web框架。axios是一个为node.js和浏览器提供的基于Promise的HTTP客户端,可以轻松实现请求的发送和响应的处理。使用axios并且结合async/await的语法,可以使我们轻松、优雅地进行网络请求。下面让我们来看看axios和async/await的具体运用。

一、安装axios并引入

要使用axios,我们首先需要安装它。我们可以使用npm安装它。下面的代码段展示了如何在我们的项目中安装axios:

npm install axios

当我们安装了axios之后,我们需要引入它,这样,才能在我们的项目中使用这个库。我们可以通过下面的语句将axios引入我们的项目:

import axios from 'axios';

二、使用async/await和axios发送数据请求

异步操作的一个传统方式是回调。回调是指将一个函数作为参数传递给另一个函数,在被调用函数完成之后,第一个函数被执行。这样,我们就可以完成先发起异步请求,然后在处理完成数据之后执行回调函数。下面是一个使用回调函数来完成异步请求的代码:

function getData(url, callback) {
  const xhr = new XMLHttpRequest();
  xhr.open('GET', url, true);
  xhr.onload = function() {
    if (xhr.status === 200) {
      callback(null, xhr.responseText);
    } else {
      callback(xhr.statusText);
    }
  };
  xhr.onerror = function() {
    callback(xhr.statusText);
  };
  xhr.send();
}

getData('/image.png', function(err, data) {
  if (err !== null) {
    console.log('Something went wrong: ', err);
  } else {
    console.log('Data received: ', data);
  }
});

而在具有Promise和async/await支持的框架中,我们可以使用Promise和async、await,而不是使用回调函数。下面是一个使用async/await和axios来完成异步请求的代码。

async function getData() {
  try {
    const response = await axios.get('/image.png');
    console.log(response.data);
  } catch (error) {
    console.error(error);
  }
}

getData();

在上面的代码中,我们首先使用async关键字标识函数为异步函数。接下来,在函数体中,我们使用try…catch语句来捕捉异常。在try语句块中,我们使用await关键字来等待异步函数的完成,这里的异步函数是axios.get()方法,它将返回一个Promise对象。我们通过调用response.data来访问返回的数据。如果请求成功,我们将在控制台上打印响应数据。如果发生了错误,我们将在控制台上打印错误消息。

三、使用async/await和axios发起POST请求

POST请求通常用于将一些参数发送到服务器,并由服务器进行处理。要发送一个POST请求,我们需要使用axios的post()方法。下面是一个例子:

async function postData() {
  try {
    const response = await axios.post('/form', {name: 'David', age: 25});
    console.log(response.data);
  } catch (error) {
    console.error(error);
  }
}

postData();

在上述代码中,我们使用axios.post()方法来发送POST请求,它接收两个参数:一个是请求的URL,另一个是请求参数对象。在请求成功后,响应数据将被打印到控制台中。如果在请求过程中发生了错误,错误将被打印到控制台中。

四、使用async/await和axios发起PUT请求

PUT请求通常用于更新服务器上的数据。要发送一个PUT请求,我们需要使用axios的put()方法。下面是一个例子:

async function putData() {
  try {
    const response = await axios.put('/user/123', {name: 'David', age: 25});
    console.log(response.data);
  } catch (error) {
    console.error(error);
  }
}

putData();

在上述代码中,我们使用axios.put()方法来发送PUT请求,它接收两个参数:一个是请求的URL,另一个是请求参数对象。在请求成功后,响应数据将被打印到控制台中。如果在请求过程中发生了错误,错误将被打印到控制台中。

五、使用async/await和axios发起DELETE请求

DELETE请求通常用于从服务器上删除数据。要发送一个DELETE请求,我们需要使用axios的delete()方法。下面是一个例子:

async function deleteData() {
  try {
    const response = await axios.delete('/user/123');
    console.log(response.data);
  } catch (error) {
    console.error(error);
  }
}

deleteData();

在上述代码中,我们使用axios.delete()方法来发送DELETE请求,它接收一个参数:请求的URL。在请求成功后,响应数据将被打印到控制台中。如果在请求过程中发生了错误,错误将被打印到控制台中。

六、使用async/await和axios的其他应用

在axios中,还有许多其他的方法可以用来完成其他的请求,这些方法的使用方法与上述方法相似,只需要提供相应的请求参数。下面是一些例子:

// 发送一个多部分form-data格式的POST请求
async function postFormData() {
  const formData = new FormData();
  formData.append('name', 'David');
  formData.append('age', '25');

  try {
    const response = await axios.post('/form', formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    });
    console.log(response.data);
  } catch (error) {
    console.error(error);
  }
}

postFormData();

// 发送一个HEAD请求
async function headData() {
  try {
    const response = await axios.head('/user/123');
    console.log(response.headers);
  } catch (error) {
    console.error(error);
  }
}

headData();

// 发送一个OPTIONS请求
async function optionsData() {
  try {
    const response = await axios.options('/user/123');
    console.log(response.data);
  } catch (error) {
    console.error(error);
  }
}

optionsData();

在上述代码中,我们使用axios的post()方法来发送一个多部分form-data格式的POST请求,并将参数作为FormData对象传递。我们还使用headers对象来设置请求头信息。我们还使用axios的head()和options()方法来发送HEAD和OPTIONS请求,它们的用法与其他请求类似。

七、总结

本文介绍了如何使用axios和async/await语法来发送和处理HTTP请求。我们首先讲述了如何在我们的项目中引入和安装axios。接下来,我们具体说明了如何使用async/await和axios发送各种类型的请求,包括GET、POST、PUT和DELETE请求,以及其他类型的请求,如HEAD和OPTIONS请求。