当前位置: 首页 > news >正文

Axios 二次封装

第一步

创建api 初始文件  index.js
import axios from "axios"
// import router from "../router/index"
class Request {// 自定义变量instance;constructor(config) {// 创建axios 实例,变量接收this.instance = axios.create(config);// 添加请求拦截器this.instance.interceptors.request.use((config) => {// config.headers.token = JSON.parse(localStorage.getItem("giant_userdata")).sessionkey;return config;},(error) => {return error;});// 添加相应拦截器this.instance.interceptors.response.use((res) => {if(res.status == 200){if(res.data.code == '503'){this.countDown503()}else{return res;}}},(error) => {return error;});}// 2request(config) {return new Promise((resolve, reject) => {this.instance.request(config).then((res) => {return resolve(res);}).catch((error) => {return reject(error);});});}// 1get(config) {return this.request({...config,method: "GET",});}post(config) {const formData = new FormData()for (const key in config.params) {formData.append(key, config.params[key])}return this.request({data: formData,url: config.url,method: "POST",headers: {'Content-Type': 'multipart/form-data'}});}postblob(config) {  const formData = new FormData()for (const key in config.params) {formData.append(key, config.params[key])}return this.request({data: formData,url: config.url,method: "POST", headers: {'Content-Type': 'application/x-msdownload'},responseType: 'blob'})}// postjson(config) {return this.request({...config,method: "POST",headers: {'Content-Type': 'application/json'}});}// delete(config) {//   return this.request({//     ...config,//     method: "DELETE",//   });// }
}export default Request;

第二部

创建 自定义对应的模块js文件  如: login.js
引入第一步文件js
import { request } from '../config.js'
//  分页
export const flowpages = (params) => {return request.post({url: '/flow/pages',params})
}
//修改
export const flowrupdate = (params) => {return request.postjson({url: '/flow/update',data: JSON.stringify(params)})
}
//后端返回数据流前端处理导出
export const exportflowcasePages = (params) => {return request.postblob( {url: '/export/flow/casePages',params})
}

第三部

引入第二部文件到对应的vue项目
import {exportflowcasePages,flowcasePages,flowpages
} from "@/api/index/index.js"

进行使用

      flowpages(tmpParams).then((res) => {if (res.status == 200) {if (typeof res.data != "object") {res.data = JSON.parse(res.data)}if (res.data.code == 200) {console.log(res.data,'文件信息')} else {_this.$toast(res.data.msg ? res.data.msg : "网络加载失败,请稍后再试")}} else {_this.$toast(res.data.msg ? res.data.msg : "网络加载失败,请稍后再试")}}).catch((err) => {_this.$toast("网络加载失败,请稍后再试")})

此处后端返回数据流导出设置

 exportflowcasePages(tmpParams).then((res) => {if (res.status == 200) {const elink = document.createElement('a')elink.download = '列表.xls'elink.style.display = 'none'const blob = new Blob([res.data], { type: 'application/x-msdownload' })elink.href = URL.createObjectURL(blob)document.body.appendChild(elink)elink.click()document.body.removeChild(elink)} else {_this.$toast(res.data.msg ? res.data.msg : "网络加载失败,请稍后再试")}}).catch((err) => {_this.$toast("网络加载失败,请稍后再试")})
http://www.dtcms.com/a/291826.html

相关文章:

  • PHP中的异常处理与自定义错误页面
  • EasyGBS算法仓:找算法,变成 “点一下” 的事!
  • 使用 Conda 工具链创建 UV 本地虚拟环境全记录——基于《Python 多版本与开发环境治理架构设计》
  • Docker实战:使用Docker部署TeamMapper思维导图工具
  • 推送git问题_查询索引文件——查导致的文件
  • 按键精灵脚本:自动化利刃的双面性 - 从技术原理到深度实践与反思
  • windows10安装node-v18.18.0-x64安装
  • async/await 函数
  • 【CVPR 2025】低光增强RT-X Net( 红外辅助结构引导)--part1论文精读
  • 开发者的AI认知指南:用大模型重新理解人工智能(下)
  • 公交车客流人数统计管理解决方案:智能化技术与高效运营实践
  • 九鼎X8390 开发板 联发科 MT8390 / MT8370 芯片平台
  • 华为高斯Gauss数据库版本与兼容协议--详解(附带Gorm连接示例代码)
  • 5G工业路由器如何凭借高性价比助力多行业数字化转型?
  • 2025 LCP用2,6酸市场前瞻:全面洞察与投资潜力预测
  • iOS组件化详解
  • Windows 环境下,使用 VirtualBox 安装 Ubuntu 虚拟机
  • 34、鸿蒙Harmony Next开发:使用动画-转场动画
  • JMeter groovy 编译成.jar 文件
  • RabbitMQ--批量处理
  • 【Zephyr开发实践系列】09_LittleFs文件系统操作
  • 在easyui中如何自定义表格里面的内容
  • 目标检测系列(六)labelstudio实现自动化标注
  • vue2 webpack 部署二级目录、根目录nginx配置及打包配置调整
  • 容器化部署 Tomcat + MySQL 实战指南:从入门到进阶
  • MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
  • 架构演进核心路线:从离线仓库到实时湖仓一体
  • LLM评测框架Ragas Agents or Tool Use Cases指标(解决了Ollama推理框架不支持的问题)
  • 微软徽标认证是什么?如何快速获取驱动签名?
  • Linux操作系统从入门到实战(十二)Linux操作系统第一个程序(进度条)