vue中的axios的二次封装(JS)

Vue2 开发总结 axios 二次封装 | 请求、响应、渲染的大致流程分析 阅读详情

 axios.js

import Vue from 'vue'
import axios from 'axios'
import apiConfig from '@/config/api.config'
import { TOKEN_KEY } from '@/data/constant'
import FieldStyleUtils from '@/utils/field-style'

axios.defaults.baseURL = apiConfig.apiHost
axios.defaults.headers.common['Accept'] = 'application/json'

// request拦截器
axios.interceptors.request.use(
  config => {
    const token = Vue.ls.get(TOKEN_KEY)
    const role = Vue.ls.get('X-Role')
    if (token) {
      config.headers['X-Token'] = token // 让每个请求携带自定义 token
    }
    if (role) {
      config.headers['X-Role'] = role
    }
    config.data = FieldStyleUtils.toSnakecase(config.data)
    config.params = FieldStyleUtils.toSnakecase(config.params)
    return config
  },
  error => {
    return Promise.reject(error)
  }
)
// response 拦截器
axios.interceptors.response.use(
  response => {
    return FieldStyleUtils.toCamelcase(response.data)
  },
  error => {
    let data
    if (error.response) {
      data = error.response.data
      if (error.response.status >= 500) {
        data = {
          code: '500',
          message: '服务器内部发生了错误'
        }
      } else if (error.response.status === 401) {
        Vue.ls.remove(TOKEN_KEY)
      }
    } else {
      data = {
        message: '网络错误'
      }
    }
    return Promise.reject(data || error)
  }
)

const setHeaderToken = (token) => {
  axios.defaults.headers.common['X-Token'] = token
}

const clearHeaderToken = () => {
  delete axios.defaults.headers.common['X-Token']
  Vue.ls.clear()
  window.location.reload()
}

export default axios

export {
  setHeaderToken,
  clearHeaderToken
}

api

import axios from '@/utils/axios'
import Base from '../base'

const path = '/technologies'

class Technology extends Base {
  constructor (attrs = {}) {
    super(attrs)
  }
  static async list (params) {
    const { technologies, count } = await axios.get(path, { params })
    const list = technologies.map(item => new Technology(item))
    return { technologies: list, count }
  }

  static async detail (id) {
    const { technology: attrs } = await axios.get(`${path}/${id}`)
    return new Technology(attrs)
  }
}

export default Technology

调用

    async fetchList () {
      this.loading = true
      try {
        this.pagination.pageNo++
        const params = {
          text: this.keyword,
          ...this.pagination
        }
        const { technologies } = await Technology.list(params)
        if (technologies.length > 0) {
          this.technologies.push(...technologies)
        } else {
          this.finished = true
          this.pagination.pageNo--
        }
      } catch ({ message = '获取成果列表失败' }) {
        this.error = true
        this.$toast.fail(message)
      } finally {
        this.loading = false
      }
    }

 

vue3 axios二次封装(js,ts两个版本) 可以在请求拦截器中处理一些业务(开始进度条、请求头携带公共参数)结束、简化服务器返回的数据、处理http网络错误)使用响应拦截器,可以在响应拦截器中处理一些业务(2 新建一个文件夹。 阅读详情

相关推荐

告别水印!Vue3项目集成Stimulsoft.Reports.js完整配置与激活指南

本文详细介绍了如何在Vue3项目中集成Stimulsoft.Reports.js,提供从授权策略到性能优化的完整解决方案。通过模块化架构设计和现代化引入方式,帮助开发者高效实现专业级报表功能,同时避免版权风险和水印问题,特别适合中小型项目需求。

weixin_33701294的博客 432

vue2 封装网络请求 axios

3.接下来我们可以新建一个 文件servies.js 创建axios 实例。2.在根目录新建一个 request 文件夹 专门存放网络请求相关的文件。新建一个文件:根据不同的开发环境,配置不同的请求。4.封装post,get,patch 请求。6.在页面使用封装的请求方法。

weixin_51614564的博客 1954

论文学习| PoseDiffusion: 通过扩散辅助的束调整解决姿态估计问题

解决的问题:相机姿态估计,这是计算机视觉中的一个经典问题。提出的方法:一种新的方法,PoseDiffusion,它将Structure from Motion(SfM,从运动中构建结构)问题整合到概率扩散框架中。优势模拟捆绑调整的迭代过程。整合来自极线几何的几何约束。在具有挑战性的场景中(如视角稀疏、基线宽的情况)表现良好。能够为多张图片预测内外参。结果:在现实世界数据集上,PoseDiffusion超越了经典的SfM管道和学习型方法,在不同数据集上具有跨数据集的泛化能力,无需进一步训练。

麻辣小香郭的博客 1990

vue2使用axios封装请求数据,教会你封装,简单易懂,轻松学会axios封装请求数据 看一眼就会 手把手教会

手把手教会你,vue前端axios封装请求数据 教会你封装教会你请求数据 简单易懂,轻松学会axios封装请求数据 看一眼就会

qq_53135313的博客 1万+

Proteus 8.17安装部署全指南:避坑、汉化与STM32库配置

Proteus是一款广泛用于单片机仿真与电路设计的EDA工具,其核心价值在于支持嵌入式系统原型验证与教学实践。Proteus 8.17版本重构了许可证机制(LIC Engine)、依赖环境(VC++ 2019/NET 4.8)及路径加载逻辑,导致传统安装方法失效。掌握正确安装部署流程,是保障原理图绘制、VSM仿真(如51/STM32/ESP32)及外设波形观测(OLED、SPI、ADC)稳定运行的前提。本文聚焦Windows平台下零失败安装路径选择、权限配置、汉化实施与高频器件(如STM32F103)元件库

weixin_33377602的博客 402

AI量化投资开源平台——Qlib(微矿)的学习使用笔记(随缘更新)

Qlib 涵盖了量化投资的全过程,为用户的 AI 算法提供了高性能的底层基础架构,从框架设计上让用户可以更容易地应用 AI 算法来辅助解决量化投资的各个关键问题(例如 Alpha 预测,风险预测,市场动态性建模)。本文旨在记录一些面向初学者的基础内容。

in_void的博客 3133

vue3封装axios、多环境配置、代理、跨域、常用的请求前后端写法记录。这一篇就够了!

vue使用axios,常用请求,多环境、代理解决跨域问题

m0_72618563的博客 7392

直击高频编程考点:字符串知识及经典算法题总结

字符串相关基本练习题总结(最长公共子串、最长回文子串、最长无重复字符子串、最小覆盖子串、字符串相乘、中文数字表达转实际数字格式等)

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

在vue2中封装axios请求

封装axios,实现接口请求

七号程序员的博客 1147

【五分钟论文笔记】Vision Banana:图像生成器成为通用视觉学习器

图像生成训练可以像 LLM 预训练一样,让模型学习强大且通用的视觉表示感知即生成——将视觉任务输出参数化为 RGB 图像,是一种优雅且强大的统一框架视觉理解能力可以在不牺牲生成能力的情况下获得——两者可以共存于同一个模型。

专注:太空算力、AI infra、异构调度、大模型成本工程 234

DeepSeek 赋能智慧消防:以 AI 之力筑牢城市安全 “防火墙”

在数字化浪潮下,智慧消防系统亟需先进技术提升效能。DeepSeek 凭借 Transformer 架构与混合专家架构等核心技术,具备强大的多模态数据处理与智能决策能力,且支持本地化部署,保障数据安全。其在智慧消防领域的应用成效显著,从实现火灾风险动态感知与早期精准预警,到优化智能接警调度、设备健康管理,再到辅助应急指挥与疏散,有效降低火灾风险与事故损失。未来,DeepSeek 有望在智慧消防领域持续拓展,同时也需应对技术、数据等多方面挑战。

邓邓子的博客 1691

vue3中axios二次封装

上面封装的aixos,request.js文件。

qq_26809797的博客 239

Vivado ILA抓DDR信号(各种IO信号:差分、ISERDES、IOBUFDS等)

Vivado ILA抓DDR信号(各种IO信号:差分、ISERDES、IOBUFDS等)

千歌叹尽执夏的博客 1105

【Vue.js】 Vue axios 二次封装

axios 的 API 很友好,你完全可以很轻松地在项目中直接使用。不过随着项目规模增大,如果每发起一次HTTP请求,就要把这些比如设置超时时间、设置请求头、根据项目环境判断使用哪个请求地址、错误处理等等操作,都需要写一遍。这种重复劳动不仅浪费时间,而且让代码变得冗余不堪,难以维护。为了提高我们的代码质量,我们应该在项目中二次封装一下 axios 再使用。

day day up 422

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

vue + vite + js 项目中 axios的二次封装

很久以前,当浏览器页面向服务器请求数据时,整个页面都会进行刷新,这会造成网络资源的占用,为了提高数据请求效率,异步网络请求ajax出现,它可以在页面无刷新的情况下请求数据。jQuery封装的ajax。原生的XHR(XMLHttpRequest),以及axios都可以实现异步网络请求。

buchibingqilin的博客 812

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

vue axios封装及二次封装

第二步:在 src 文件下创建一个 api.js 文件。第三步:在 main.js 文件中声明原型使用它。第四步:在页面中使用。

weixin_67420857的博客 923

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

axios二次封装设置responseType:“blob“使用方法

axios二次封装设置responseType:"blob"使用方法

weixin_50692948的博客 622

vue.js 二次封装axios + 实现令牌刷新

文章目录前言一、封装axios二、实现令牌刷新效果总结 前言 为什么要封装 封装的作用:代码具有可重用性和更好的维护性 一个api的可能在其它的地方多次被调用,通过封装减少代码量,达到更好的维护效果 提示:以下是本篇文章正文内容,下面案例可供参考 一、封装axios 1:npm安装axios至当前项目中,如下 npm install axios --save 2:新建文件夹api,在里面创建js文件,如下图 3:再创建util文件,在里面再创建Http.js文件,如下图 4:再Http.js

Caroline_cai的博客 862

使用JS二次封装Axios

使用JS二次封装Axios

scongx的博客 1157

axios二次封装

axios二次封装的思路

qq_45796592的博客 5571

axios二次封装(详细+跨域问题)

一,为社么要对axios进行二次封装? 答:主要是要用到请求拦截器和响应拦截器; 请求拦截器:可以在发请求之前可以处理一些业务 响应拦截器:当服务器数据返回以后,可以处理一些事情 二,axios的二次封装 2.1 安装axios 在当前的项目路径下安装 cnpm install --save axios 安装成功 2.2 通常情况下,项目都有一个api文件夹(axios二次封装的文件夹) a.创建一个api文件夹 b.在api文件夹下创建request.js(用于书写axios二次封装的代码) c.在

qq_48968669的博客 2万+

axios二次封装及错误捕获

import axios from 'axios' import qs from 'qs' import api from '@/base/api.js' //这里是url接口 // import {Message} from 'element-ui' const myAxios = { install(Vue) { let http = axios.create({ baseURL: 'http://localhost:8088/hklms/',

qq_41742961的博客 340

Vue2封装Axios

Axios是一个基于Promise的HTTP请求库,提供get、post等多种请求方式。核心方法axios(config)可灵活配置请求参数,同时提供get、post等便捷方法。使用时需注意跨域问题,可通过后端添加@CrossOrigin解决。为提高代码可维护性,建议进行二次封装:创建axios实例并配置请求/响应拦截器,统一管理URL和headers。最后通过API解耦将接口单独管理,在vue文件中导入并调用对应API方法即可。这种分层结构使代码更清晰,便于维护和扩展。

m0_65572741的博客 1098

vue中axios的二次封装

vue中axios的二次封装 封装 src目录下新建 api 文件夹 api文件夹下新建 http.js 文件 import axios from "axios" import qs from "qs" // 根据环境变量区分接口的默认地址 // switch(process.env.NODE_ENV) { // case "production": // axios.defaults.baseURL = ""; // break; // case "test": //

贝贝的博客 760

vue学习---axios的二次封装

针对vue项目来进行axios的二次封装,当我们需要发送多个请求时,每次发请求都需要携带一些特定的参数,还有对于错误响应的统一处理

茹嗨瑞的博客 949
上一篇: vue3+ts 结合el-table二次封装表格组件
下一篇: Vue3的优点,为什么要使用Vue3
Lxg-JJJJ
博客等级 码龄7年 960粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值