Vue对Axios网络请求进行封装

使用 Vue 框架封装 Axios 解决前端开发中常见网络请求问题 Vue中封装Axios的技术方案与实践 本文介绍了在Vue项目中封装Axios的技术方案。Axios是一个基于Promise的HTTP客户端,具有拦截请求响应、自动转换JSON数据等特性。文中展示了基础封装方案,包括创建axios实例、配置请求/响应拦截器、添加token认证等。还提供了模块化API封装示例,以及支持多种请求方式的高级封装方案。最后介绍了增强的错误处理机制,根据不同状态码返回相应错误信息。这些封装方案能实现统一的API请求处理、全局错误处理等功能,提高Vue项目的开发效率和可维护性。< 阅读详情

一、为什么要对网络请求进行封装?

因为网络请求的使用率实在是太高了,我们有的时候为了程序的一个可维护性,会把同样的东西放在一起,后期找起来会很方便,这就是封装的主要意义。

二、如何进行封装?

1、将Axios的一些配置封装起来

首先在src目录下新建一个文件夹utils,该文件夹用来存放我们自己的一些工具,接着在utils目录下新建一个request.js文件,用来对axios进行封装,目录结构如下:
在这里插入图片描述

接着可以对axios的请求进行一些配置,比如请求超时时间、发送请求之前对请求进行一些拦截、返回数据之前对请求进行一些拦截等等,request.js代码如下,项目基本上都有这些配置,拿来即用:

import axios from 'axios'
import querystring from "querystring";

//axios的一些配置信息,相当于对axios做一些封装,这个js文件相当于一个封装好自己的配置的axios
//参考文档https://www.kancloud.cn/yunye/axios/234845/

const instance = axios.create({
    // 网络请求的公共配置
    timeout: 5000
})

//打印获取数据失败的错误信息
const errorHandle = (status,info) => {
    switch(status){
        case 400:
            console.log("语义有误");
            break;
        case 401:
            console.log("服务器认证失败");
            break;
        case 403:
            console.log("服务器拒绝访问");
            break;
        case 404:
            console.log("地址错误");
            break;
        case 500:
            console.log("服务器遇到意外");
            break;
        case 502:
            console.log("服务器无响应");
            break;
        default:
            console.log(info);
            break;
             }
     }

//拦截器最常用的

//1、发送数据之前(发送请求之前)
instance.interceptors.request.use(
    config =>{  //成功则进入此方法
        //config:包含着网络请求的所有信息
        if(config.method === 'post'){
            config.data = querystring.stringify(config.data)
        }
        return config;
    },
    error => { //失败则进入此方法
        return Promise.reject(error);
    }
)

//2、获取数据之前
instance.interceptors.response.use(
    response =>{ //成功则进入此方法
        //无论请求后端成功与否,都会返回响应信息,只不过返回的方法用的不一样
        return response.status === 200 ? Promise.resolve(response) : Promise.reject(response);
    },
    error => { //失败则进入此方法
        const { response } = error;
        //错误的处理才是我们需要关注的
        errorHandle(response.status, response.info)
    }
)

export default instance;

此时,request.js就实现了对axios的初步封装,调用request.js就相当于调用axios,只不过request.js比原本的axios多了一些配置而已。

2、封装网络请求路径

在src目录下新建api文件夹,在api文件夹下新建path.js文件,该文件用来对网络请求的路径进行统一管理,目录结构如下:
在这里插入图片描述

我们可以设置一个请求路径的公共前缀,然后只需要在开发的过程中配置后缀即可,然后调用的时候将它们拼接起来,就是一个完整的请求路径了,path.js代码如下:

//axios配置网络请求的路径
const base = {
    //公共路径(前缀)
    baseUrl: "http://iwenwiki.com",

    //不同的子路径(后缀)
    chengpin: '/api/blueberrypai/getChengpinDetails.php'
}

export default base;
3、将请求封装成方法

我们可以将网络请求封装成一个个的函数,统一在一个文件中管理,调用网络请求的时候,直接调用封装好的方法即可,这样前端简洁美观,并且容易维护。

在api文件夹下新建一个index.js文件,用来管理网络请求函数,文件目录结构如下:
在这里插入图片描述

引入封装好的axios和请求路径文件,组成一个个的函数即可,index.js代码如下:

//axios网络请求的所有方法都放在这里
import axios from "../utils/request";  //引入自己封装好的axios
import path from "./path";  //引入网络请求的路径

const api = {
    //成品详情地址
    getChengPin(){
        return axios.get(path.baseUrl + path.chengpin);
    }
}


export default api;

我们将网络请求封装成getChengPin函数,前端可以直接调用获取返回信息,如果有参数的话,在函数中添加参数即可。

4、前端调用

因为我们的函数没有处理.then,所以要在调用的时候处理,当然这个处理也可以放在封装的函数中,看自己的习惯,调用代码如下:

<template>
  <div class="hello">

  </div>
</template>

<script>
import api from "../api/index";
import request from "@/utils/request";
export default {
  name: 'HelloWorld',
  mounted() {
    //函数没有处理.then,所以要在这里处理
    api.getChengPin().then(res =>{
      console.log(res.data)
    })
  }
}
</script>


三、经过以上步骤,就可以实现对axios网络请求进行封装

vue.cli项目封装全局axios,请求封装,封装公共的api和调用请求 vue.cli项目封装全局axios,封装请求,封装公共的api和调用请求的全过程 正文 1.vue项目的前期配置 新建vue的项目,下载axios ,并且在main.js中导入axios npm i axios -S //main.js import axios from "axios" 2.配置config文件中的带地址 vuecli 3+ 新版本的代理配置 - vue.config.js文件 关于代理配置 devServer: { overlay: { // 让浏览器 o 阅读详情

相关推荐

vue-axios网络请求封装

1.安装aixos -----$ npm install axios。1.安装aixos -----$ npm install axios。简单aixos实现get和post请求。4.组件引入request文件。2.创建request文件。

weixin_73015342的博客 572

vue封装Axios

Axios的封装 安装axios npm install axios; // 安装axios 引入 一般在项目的src目录中,新建一个request文件夹,然后在里面新建一个http.js和一个api.js文件。http.js文件用来封装我们的axios,api.js用来统一管理我们的接口。 // 在http.js中引入axios import axios from 'axios'; // 引入axios import QS from 'qs'; // 引入qs模块,用来序列化post类型的数据 imp

qq_43482627的博客 2217

Vue项目中的Axios封装

在Vue项目中,使用Axios进行网络请求是常见的做法。为了提高代码的可维护性和重用性,我们可以封装Axios,使其更加适应我们的项目需求。通过封装Axios,我们可以在Vue项目中更方便地进行网络请求。封装后的代码具有良好的可维护性和可扩展性,可以根据项目需求进行自定义配置和处理。首先,我们需要安装Axios。在Vue组件中,只需要引入需要的请求方法,然后调用即可。在上面的代码中,我们首先引入了Axios,并创建了一个Axios实例。安装完成后,我们可以在Vue组件中引入Axios,并进行封装。

CsCufft的博客 210

vue封装axios

vue封装axios

weixin_47586598的博客 8244

手把手教学:利用AutoDL与vLLM快速部署DeepSeek-R1大模型实战指南

本文详细介绍了如何利用AutoDL平台和vLLM框架快速部署DeepSeek-R1大模型的实战指南。从服务器配置、vLLM安装优化到模型部署的两种方案,再到性能调优和生产环境建议,手把手教你高效完成大模型部署。特别针对国内开发者遇到的网络问题提供了稳定解决方案,并分享了显存优化、磁盘清理等实用技巧。

weixin_42531779的博客 319

Material Studio 2024安装避坑指南:从证书配置到权限设置的完整解决方案

本文详细解析了Material Studio 2024的安装流程,从环境准备到权限优化的完整解决方案。针对证书配置、系统权限和计算服务等常见问题,提供了12个关键风险点的避坑指南,帮助科研工作者高效完成安装,提升材料模拟工作的效率。

moon9的博客 753

vue封装axios网络请求

vue封装axios网络请求。 'use strict' import Vue from 'vue' import axios from 'axios' import qs from 'qs' // axios 封装 // 请求时的拦截 axios.interceptors.request.use( config => { // 发送请求之前做一些处理,loading... // Vue.prototype.$loading({ // target: '#mai

qq_25934747的博客 174

k8s 查看cpu使用率最高的pod

在 Kubernetes 中,可以使用命令查看 Pod 的资源使用情况,从而找到 CPU 使用率最高的 Pod。

u010674101的专栏 3339

Vue中axios的网络请求封装

  在我们前后端分离的项目中,一般会使用http交互,vue推荐使用的网络请求框架是axios,其实就是在ajax基础上封装的框架,但是我们还可以在代码里对axios进行进一步的封装,方便我们直接使用。 步骤 (1)在vue的src根目录下创建utils包,在utils包下创建api.js文件(名字可以自定义),对各种类型的请求进行封装。 import axios from 'axios' //根路径 方便全局修改 let base = ''; //post请求 键值对拼接在url地址上 export

一个还在上学的程序缘 402

手把手教你用STM32F303和LAN9252搭建EtherCAT从站(附IO/AD/DA完整代码)

本文详细介绍了如何使用STM32F303和LAN9252搭建EtherCAT从站,涵盖硬件选型、开发环境配置、协议栈移植及IO/AD/DA功能实现。通过实战指南和完整代码,帮助开发者快速掌握工业自动化中的实时通信技术,提升系统性能与可靠性。

weixin_26802933的博客 229

4、海洋哺乳动物运动能量学:潜水与生存的奥秘

本文深入探讨了海洋哺乳动物在潜水与运动中的能量消耗机制,涵盖其生理反应、代谢成本、节能行为策略及测量方法。通过分析不同物种的能量利用特点,揭示了它们如何在极端水下环境中维持能量平衡,并讨论了该研究在保护生物学、生态系统动态和动物健康管理中的实际意义。文章还展望了未来多学科交叉、长期监测及应对环境变化的研究方向,为理解海洋哺乳动物的生存奥秘提供了系统性视角。

p5l2m9n4o6q的博客 105

vue3Axios封装网络请求 + 跨域

普通得Axios使用起来比较麻烦,不便于管理,就需要封装网络请求,减少繁琐步骤,封装最终效果,根据类别将网络请求封装在文件中,使用得时候调用文件名名称加文件中得自定义名称,就可以了。

qq_43557848的博客 735

1、动作捕捉技术:概述与历史

本博文全面介绍了动作捕捉技术的概念、历史演变、类型分类以及完整的工作流程。从早期的连续摄影技术到现代数字动作捕捉系统,文章深入探讨了光学、磁性和机械动作捕捉系统的优缺点及适用场景,并详细解析了动作捕捉数据的生成原理与数学基础。此外,还涵盖了特殊部位如手部、面部和木偶的动作捕捉方法,并讨论了动作捕捉在动画制作、虚拟现实、医疗康复等领域的广泛应用与发展前景。

apple5的专栏 213

vue2Axios网络请求封装 + 跨域

普通得Axios使用起来比较麻烦,不便于管理,就需要封装网络请求,减少繁琐步骤,封装最终效果,根据类别将网络请求封装在文件中,使用得时候调用文件名名称加文件中得自定义名称,就可以了。

qq_43557848的博客 729

AI 模型优化与部署秘籍:从理论到实战

本文系统介绍了AI模型优化与部署的关键技术。模型剪枝通过去除冗余参数减小模型规模,量化技术降低计算精度以提升效率,蒸馏方法实现知识从大模型到小模型的迁移。TensorRT通过层融合和精度校准加速GPU推理,ONNX格式实现跨框架模型转换,TFLite则优化移动端部署。这些技术共同解决了AI模型在资源受限环境下的部署难题,显著提升了模型运行效率,为AI应用落地提供了重要支撑。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 238

Amazon Skills:51个AI技能赋能亚马逊运营,从选品到广告全链路分析

在电商运营领域,数据分析和自动化工具正成为提升效率的关键。其核心原理在于将专业经验转化为结构化指令,使AI能够执行标准化流程。这种技术价值体现在降低专业门槛、提升决策效率,尤其适用于亚马逊这类数据驱动的电商平台。通过将选品、关键词研究、FBA费用计算、PPC广告优化等运营框架编码为可执行指令,AI助手能够模拟专家思维进行市场分析。Amazon Skills项目正是这一理念的实践,它提供51个覆盖运营全链路的技能模块,让卖家在自然对话环境中获得专业分析支持,实现从市场研究到利润核算的自动化工作流。

weixin_27134143的博客 1266

vue axios 网络请求的封装

vue axios 网络请求的封装 为了代码更容易管理,对网络请求进行一系列的封装 安装依赖 npm install axios --save 封装 ~在src目录文件下新建 reqest 文件夹 ~reqest文件下 新建reqest.js request.js 代码 import axios from "axios"; export function request(config) { // 1.创建axios的实例 const instance = axios.creat

weixin_44872023的博客 391

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Vue 中关于 Axios 网络请求的封装

Vue 中关于 Axios 网络请求的封装 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了一个关于Vue项目中对Axios进行封装的示例,包括请求拦截等常用功能,并附有详细的代码说明。 文件结构 network/ └── request.js 使用说明 打开 request.js 文件。 配置相关信息,如 baseUrl、timeout 等。 使用 i...

gitblog_06755的博客 373

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Vue基于Axios网络请求封装

结构 api.js 将所有的接口统一管理 request.js 对网络请求进行了封装操作 image.png 封装代码 api.js //api地址 const HOST = "http://xxx.com"; const API = HOST + "/api/public/"; const Apis = { // 产品 getProduct: API + 'product', ...

wushen的博客 412

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

vue-axios网络请求模块封装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、常见的网络请求模块,以及优缺点对比.二、使用步骤1.引入库2.读入数据总结 前言 感谢coderwhy-王红元 老师. 上善若水,泽被后世. 提示:以下是本篇文章正文内容,下面案例可供参考 一、常见的网络请求模块,以及优缺点对比. 常见的网络请求模块,以及优缺点对比。 JSONP的原理和封装 JSONP原理回顾 JSONP请求封装 axios的内容详解 认识axios网络模块 发送基本请求 axios创建实例 axi

欢迎来到烟火气知识小天地!这里记录生活、工作中的 “小麻烦”,从软件故障到生活难题,我会毫无保留分享解决思路与方法,愿成为你排忧解难时的温暖参考,伴你在解决问题路上稳步前行。 1242

vue学习:网络请求的封装axios

一、为什么选择axios 二、axios的基本使用 // 1.axios基本使用 axios({ url: "http://123.207.32.32:8000/home/multidata", method: 'get' //默认是get请求 }).then(res=>{ console.log(res); }) // axios.post() axios({ // url: "http://123.207.32.32:8000/home/data?type=sell&am

m0_67400973的博客 1135

Vue网络请求 axios封装

1.安装axios npm install --save axios vue-axios 2.在main.js中导入axios import Vue from 'vue' import App from './App' import router from '../src/router/router' import axios from 'axios' // Vue.use(axios); //...

前端小白的博客 2404

html post请求_Vue项目封装axios实现网络请求

封装axios用于网络操作,实现get ,post,表单文件上传功能。axios的GitHub地址:https://github.com/axios/axios。axios特点(官网翻译)从浏览器中创建 XMLHttpRequests从 node.js 创建 http 请求支持 Promise API拦截请求和响应转换请求数据和响应数据取消请求自动转换 JSON 数据客户端支持防御 XSRF安装n...

weixin_39632397的博客 681

前端学习vue:10.Axios网络请求封装

/ 参考文档: https://www.kancloud.cn/yunye/axios/234845。然后在src下再创建个文件夹名字为api,在此文件夹下创建index.js和path.js。在日常应用过程中,一个项目中的网络请求会很多,此时一般采取的方案是将网络请求封装起来。console.log("服务器认证失败");// config: 包含着网络请求的所有信息。// 错误的处理才是我们需要最关注的。// 网络请求的公共配置。// 存放所有的网络请求路径。// 错误码信息处理。

m0_59008364的博客 1116

Vue中封装Axios网络请求

Vue中封装Axios网络请求

qq_45737165的博客 423

Vue进行网络请求时该选择什么网络模块?Vue对axios进行封装实例

文章目录1. Vue选择什么网络模块? 1. Vue选择什么网络模块? Vue中发送网络请求有非常多的方式,那么,在开发中,如何选择呢? 选择一:传统的Ajax是基于XMLHttpRequest(XHR) 为什么不用它呢? 非常好解释,配置和调用方式等非常混乱。 编码起来看着就非常不舒服。 所以在真实开发中很少直接使用,而是使用JQuery-Ajax。 选择二:JQuery-Ajax相对于传统的ajax是非常好用的。 为什么不用它呢? 首先,我们需明确一点:在Vue的整个

鸭绒的博客 395
上一篇: Vue项目报错import { performance } from ‘node:perf_hooks‘ ^^^^^^ SyntaxError: Cannot use import statemen
下一篇: Arcgis加载在线地图(内涵各种在线地图)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃雪糕的小布丁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值