详解vue中axios请求的封装

下面我会详细讲解vue中axios请求的封装。

前言

在vue项目开发中,我们经常需要使用到axios进行数据请求。但是,每次使用axios都需要重复的书写请求代码,一方面增加了代码量,另一方面也容易造成代码的维护成本变高。

所以,我们需要将axios请求进行封装,以便于复用和维护代码。

封装步骤

1. 安装axios

在vue项目中,使用axios请求前,需要先安装axios。

使用npm安装:

npm install axios --save

使用yarn安装:

yarn add axios

2. 创建api.js文件

在src目录中创建一个api.js文件,这个文件将用于存放axios请求的封装。

3. 导入axios和Vue

在api.js文件中,需要导入axios和Vue:

import axios from 'axios'
import Vue from 'vue'

4. 创建axios实例

在api.js文件中,创建axios实例,并设置一些默认配置:

// 创建axios实例
const http = axios.create({
  baseURL: 'http://localhost:3000', // 接口的基础地址
  timeout: 10000 // 请求超时时间
})

// 添加请求拦截器
http.interceptors.request.use(config => {
  // 在发送请求之前做些什么
  return config
}, error => {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
http.interceptors.response.use(response => {
  // 对响应数据做点什么
  return response
}, error => {
  // 对响应错误做点什么
  return Promise.reject(error)
})

export default http

上面的代码中,我们创建了一个axios实例,并设置了接口的基础地址为http://localhost:3000,超时时间为10秒。同时,我们为这个实例添加了请求拦截器和响应拦截器,这样我们就可以在请求和响应中进行一些公共的操作,比如添加token。

5. 封装get请求

在api.js文件中,我们封装一个get请求的方法:

export function get(url, params) {
  return new Promise((resolve, reject) => {
    http.get(url, { params })
      .then(response => {
        // 成功返回
        resolve(response.data)
      })
      .catch(error => {
        // 失败返回
        reject(error)
      })
  })
}

上面的代码中,我们封装了一个get请求的方法,它接受两个参数:请求的地址和请求的参数。在方法内部,我们使用axios实例的get方法发送请求,并通过Promise的resolve和reject方法处理请求的结果。

6. 封装post请求

在api.js文件中,我们封装一个post请求的方法:

export function post(url, data) {
  return new Promise((resolve, reject) => {
    http.post(url, data)
      .then(response => {
        // 成功返回
        resolve(response.data)
      })
      .catch(error => {
        // 失败返回
        reject(error)
      })
  })
}

上面的代码中,我们封装了一个post请求的方法,它接受两个参数:请求的地址和请求的参数。在方法内部,我们使用axios实例的post方法发送请求,并通过Promise的resolve和reject方法处理请求的结果。

7. 在组件中使用封装的请求

在vue组件中,我们可以直接使用上面封装的get和post方法来发送请求。下面是一个实例:

<template>
  <div>
    <ul>
      <li v-for="(item, index) in list" :key="index">{{ item }}</li>
    </ul>
  </div>
</template>

<script>
  import { get } from '@/api'

  export default {
    name: 'App',

    data: () => ({
      list: []
    }),

    created () {
      this.getList() // 页面刚刚加载时就调用列表数据
    },

    methods: {
      getList () {
        get('/list')
          .then(res => {
            this.list = res.list // 将请求到的数据赋值给组件的list属性
          })
          .catch(err => {
            console.log(err)
          })
      }
    }
  }
</script>

在上面的实例中,我们在组件的methods中定义了一个getList方法,用来请求接口中的list数据。通过调用封装的get方法获取到数据,然后将数据赋值给组件的list属性,最后渲染到页面上。

总结

到这里,我们就完成了vue中axios请求的封装。通过这样的封装,我们可以减少代码的重复书写,提高开发效率,并且这样的封装也更加利于代码的维护。在实际项目中,我们可以按照这样的思路继续进行更深入的封装,以适应不同的需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解vue中axios请求的封装 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue路由切换之淡入淡出的简单实现

    下面是“vue路由切换之淡入淡出的简单实现”的完整攻略: 一、背景介绍 在web应用程序中,经常需要通过路由来实现页面切换,给用户带来更好的交互体验。而在路由切换时,淡入淡出效果通常能使用户感觉更加温和,增强用户体验。 本文主要介绍如何在vue项目中实现路由切换时的淡入淡出效果。 二、基本思路及方法 要实现vue路由切换时的淡入淡出效果,基本思路是通过CSS…

    Vue 2023年5月27日
    00
  • vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component

    下面是详细讲解 vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component 的完整攻略。 1. 什么是 vue-cli3? Vue CLI 是一个官方发布的 Vue.js 项目脚手架,提供了标准化、插件化的 Vue 项目开发体验。vue-cli3 是 Vue CLI 的第三个版本,相较于前两个版本,vue-c…

    Vue 2023年5月28日
    00
  • 如何使用 Vuex的入门教程

    下面我将给出“如何使用 Vuex的入门教程”的详细攻略: 1. Vuex是什么 Vuex是一个专为Vue.js应用程序开发的状态管理模式(store)+库,它采用集中式存储管理应用的所有组件状态,并以相应的规则保证状态以一种可预测的方式发生变化。 2. 如何安装并使用Vuex (1)在Vue项目中安装Vuex: 在项目目录下打开终端,执行以下命令: npm …

    Vue 2023年5月27日
    00
  • vue-cli3项目打包后自动化部署到服务器的方法

    今天我来为大家讲解一下如何将Vue CLI 3.x项目打包后自动化部署到服务器上的方法。整个过程分为以下几个步骤: 使用Vue CLI 3.x打包项目 创建服务器环境 上传打包好的文件到服务器 配置Nginx服务器 下面,我们将一步一步来讲解这些步骤以及使用示例。 1. 使用Vue CLI 3.x打包项目 首先,我们需要先使用Vue CLI 3.x来打包我们…

    Vue 2023年5月28日
    00
  • vue双向数据绑定原理分析、vue2和vue3原理的不同点

    Vue的双向数据绑定是Vue中最重要的主要概念之一。它是Vue框架的一个核心特性,使得Vue应用具有了响应性和高效性。在这里,我们将详细讲解Vue双向数据绑定的原理以及Vue 2和Vue 3原理的不同点。 Vue双向数据绑定原理分析 Vue的双向数据绑定可以定义为:当数据模型变化时,视图会自动更新;当视图变化时,数据模型也会自动更新。这种自动化的数据绑定机制…

    Vue 2023年5月28日
    00
  • 详解Vue的列表渲染

    下面我会详细讲解“详解Vue的列表渲染”的完整攻略。 什么是Vue的列表渲染 Vue的列表渲染是指Vue提供的一个功能,可以让我们在HTML模板中快速创建一个和数组相关的数据列表。该功能常用于需要遍历数据并输出模板多次的场景,比如电商网站的商品列表、新闻博客类网站的文章列表等。常用的列表渲染指令有v-for和v-bind。 Vue的列表渲染的语法 Vue提供…

    Vue 2023年5月27日
    00
  • vue+koa2实现session、token登陆状态验证的示例

    一、概述 在web应用程序中,访问控制是一个非常重要的问题。session和token都是常见的存储用户身份验证状态的解决方案。在vue和koa2框架的帮助下,可以轻松实现这些解决方案,并提高应用程序的安全性。 本文将详细介绍如何使用vue+koa2实现session、token登陆状态验证的示例。 二、实现session存储用户身份验证状态 session…

    Vue 2023年5月28日
    00
  • 详解关于Vue单元测试的几个坑

    我来详细讲解一下“详解关于Vue单元测试的几个坑”的完整攻略。 1. 前置条件 在进行Vue的单元测试之前,需要安装Vue Test Utils和Jest两个库,这两个库用于进行Vue单元测试的框架和运行环境。 安装Vue Test Utils和Jest: npm install –save-dev @vue/test-utils jest 2.安装Vue…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部