返回

Vue中利用axios优雅处理Api请求

前端

在日常开发中,我们通常使用第三方库 axios 来处理 HTTP 请求。为了让代码更加优雅,我们可以对 axios 进行封装,并设置请求/响应的全局拦截。本文将介绍如何进行这些操作。

一、封装一个request.js

首先,我们在项目中创建一个名为 request.js 的文件,并在其中封装一个函数来处理 HTTP 请求。这个函数接收两个参数:url 和 data,分别表示请求的 URL 和请求的数据。函数内部使用 axios 库来发送请求,并返回一个 Promise 对象。

// request.js
import axios from 'axios'

export default function request(url, data) {
  return axios({
    url,
    data,
    method: 'post'
  })
}

二、使用axios进行网络请求

在 Vue 组件中,我们可以使用 request.js 来进行网络请求。例如,我们可以使用以下代码来获取用户列表:

// App.vue
import request from './request'

export default {
  data() {
    return {
      userList: []
    }
  },
  mounted() {
    request('/api/user/list').then(res => {
      this.userList = res.data
    })
  }
}

三、设置请求/响应的全局拦截

为了方便地处理所有请求和响应,我们可以设置请求/响应的全局拦截。在 Vue 项目的 main.js 文件中,我们可以使用以下代码来设置拦截器:

// main.js
import axios from 'axios'

axios.interceptors.request.use(config => {
  // 在发送请求之前做些什么
  return config
}, error => {
  // 当请求出错时做些什么
  return Promise.reject(error)
})

axios.interceptors.response.use(response => {
  // 在收到响应时做些什么
  return response
}, error => {
  // 当响应出错时做些什么
  return Promise.reject(error)
})

在拦截器中,我们可以对请求或响应做一些处理,例如添加请求头、处理错误、在请求或响应之前或之后显示加载动画等。

四、总结

通过对 axios 的封装和设置请求/响应的全局拦截,我们可以让 Vue 项目中的网络请求更加优雅和易于管理。希望本文能帮助大家更好地使用 axios 来进行网络请求。