Vue3 Axios 终止请求

引言

在开发前端应用程序时,经常会遇到需要发送网络请求的场景。而使用Axios库是一种常见的方式,它提供了一个简洁、灵活和强大的API来处理HTTP请求。然而,在某些情况下,我们可能需要终止正在进行的请求,例如用户切换页面或取消操作。本文将介绍如何在Vue3中使用Axios进行请求终止。

Axios 简介

Axios 是一个基于Promise的HTTP客户端库,可以在浏览器和Node.js中使用。它具有以下特点:

  • 支持浏览器和Node.js环境
  • 提供了简洁而强大的API
  • 支持请求和响应拦截器
  • 具有自动转换请求和响应数据的功能
  • 提供了丰富的参数配置选项

Axios 在Vue项目中的使用非常广泛,尤其是在与后端API进行交互时。下面我们将介绍如何在Vue3中使用Axios,并终止请求。

安装和配置 Axios

首先,我们需要安装Axios库。在Vue项目中,可以通过以下命令使用npm安装Axios:

npm install axios

安装完成后,我们需要在Vue应用程序的入口文件中进行配置。可以在 main.js 文件中添加以下代码:

import { createApp } from 'vue'
import App from './App.vue'
import axios from 'axios'

// 配置 Axios
axios.defaults.baseURL = '
axios.defaults.timeout = 5000

const app = createApp(App)
app.mount('#app')

在上面的代码中,我们通过调用 axios.defaults 对象来配置全局的基本URL和超时时间。这样,在发送请求时,不需要重复指定这些选项。

发送请求

在Vue3中,我们可以使用 setup 函数来发送请求。在组件中,可以使用 reactive 函数创建一个响应式的 axios 对象,并在需要发送请求时使用它。

下面是一个示例组件,用于向后端API发送POST请求:

<template>
  <button @click="sendRequest">发送请求</button>
</template>

<script>
import { reactive } from 'vue'
import axios from 'axios'

export default {
  setup() {
    const axiosInstance = reactive(axios.create())

    const sendRequest = async () => {
      try {
        const response = await axiosInstance.post('/api/data', { /* 请求数据 */ })
        console.log(response.data)
      } catch (error) {
        console.error(error)
      }
    }

    return {
      sendRequest
    }
  }
}
</script>

在上面的代码中,我们使用 reactive 函数创建了一个响应式的 axiosInstance 对象。然后,我们在 sendRequest 函数中使用该对象来发送请求,并处理响应和错误。

终止请求

为了能够终止请求,我们需要使用 CancelTokencancel 方法。CancelToken 是Axios库提供的一个用于创建取消令牌的类,而 cancel 方法用于取消请求。

下面是一个示例组件,用于演示如何终止请求:

<template>
  <div>
    <button @click="sendRequest">发送请求</button>
    <button @click="cancelRequest">取消请求</button>
  </div>
</template>

<script>
import { reactive } from 'vue'
import axios from 'axios'

export default {
  setup() {
    const axiosInstance = reactive(axios.create())
    const source = axiosInstance.CancelToken.source()

    const sendRequest = async () => {
      try {
        const response = await axiosInstance.get('/api/data', { cancelToken: source.token })
        console.log(response.data)
      } catch (error) {
        console.error(error)
      }
    }

    const cancelRequest = () => {
      source.cancel('请求已取消')
    }

    return {
      sendRequest,
      cancelRequest
    }
  }
}
</script>

在上面的代码中,我们通过调用 axios.create() 创建了一个新的 axiosInstance 对象,并使用 source 对象创建了一个取消令牌。然后,我们在发送请求时将取消令牌传递给 cancelToken 选项。最后,我们可以通过调用 cancelRequest 函数来取消请求,该函数将调用 `source.cancel