Vue 封装的 axios 类的使用(小bug 改进)

http类

import { baseUrl } from "./config";   //引入config.js中的配置
import axios from "axios";   		//引入axios
import qs from "querystringify";       //form-Data请求时的工具类class Http{axios = null;lastRequestIntercept = null;constructor() {//在初始化方法中,创建一个 axios的实例 , 并配置一些基础配置this.axios = axios.create({baseURL:baseUrl,timeout:10000,});//为新建的 实例添加一个响应 响应 响应 拦截器, 可以根据情况, 在err 中,设置,如里返回的参数为401,就让用户跳转到 登录页等功能, 自已写, 也可以把这个拦截器删除掉this.axios.interceptors.response.use(response=>{return response.data;},(err)=>{console.log(err)if(err){}return Promise.reject(err)})}//dataType的选项有 queryString == qs, formData, json//封装一个请求的方法request({url,data,method="get",auth=false,dataType="json"}){//如果请求中需要token,就在store缓存中取出token,并设置在请求头中if(auth){//这是一个请求拦截器,可以在请求之前添加,任何想要添加的数据this.axios.interceptors.request.use((config)=>{let token = localStorage.getItem("token")token && (config.headers.token = token);console.log(config)return config;},(err)=>{return Promise.reject(err)})}//如果是get方法, 直接传参数就可以了 这里的 data是一个json对象  如  data = {aparam:"aaa",bparam:"bbbb"}if(method === "get"){return this.axios.get(url,{params:data})}//下面的 data 都是一个对象参数//当post传值时, 有可能是 json 的 也有可能是 qs 的, 也有可以是文件类型的 formdata的,下面的方法根据情况,分别组织了参数格式,以及header的头,正确传参可以了if(method === "post"){if(dataType === "json") {return this.axios.post(url, data, {headers:{"Content-Type":"application/json"}})}else if(dataType === "formData"){let formData = new FormData();Object.keys(data).forEach((key)=>{formData.append(key,data[key])})return this.axios.post(url, formData, {headers:{"Content-Type":"multipart/form-data"}})}else if(dataType === "qs"){return this.axios.post(url,qs.stringify(data),{headers:{"Content-Type":"application/x-www-form-urlencoded"}})}}}}export { Http }

业务类 api 继承 http
api.js

import {Http} from "@/utils/http"
class api extends Http{static getinstance(){return new api();}login(data){return this.request({url:"/api/user/oauth2",method:"post",data,dataType:"formData"})}//用户是否是新用户isnewuser(){return this.request({url:"/api/user/isNew",method:"post",auth:true})}//添加抢票addrobinfo(data){return this.request({url:"/api/ticket/add",method:"post",data,dataType:"formData",auth:true,})}//抢票记录robrecord(){return this.request({url:"/api/ticket/index",method:"post",auth:true})}
}
export default api

页面中使用时

在这里插入图片描述
改进方法, 每一次都来 new api()的实例有点麻烦,所以, 我在 api 的类中添加了一个静态方法
在这里插入图片描述
有了静态方法,就不用每次使用时就要new了
看一下使用的代码
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/484807.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试真题-最大坐标值-2023年OD统一考试(C卷)--Python--开源

题目: 考察内容: for if 异常处理细节(负数-1, 指令为0,且幸运数为0,不进不退) 代码: """ 题目分析: 异常处理:try -except 当指令为0&am…

【OpenFeign常用配置】

OpenFeign常用配置 快速入门:1、引入依赖2、启用OpenFeign 实践1、引入依赖2、开启连接池功能3、模块划分4、日志5、重试 快速入门: OpenFeign是一个声明式的http客户端,是spring cloud在eureka公司开源的feign基础上改造而来。其作用及时基于…

二.西瓜书——线性模型、决策树

第三章 线性模型 1.线性回归 “线性回归”(linear regression)试图学得一个线性模型以尽可能准确地预测实值输出标记. 2.对数几率回归 假设我们认为示例所对应的输出标记是在指数尺度上变化,那就可将输出标记的对数作为线性模型逼近的目标,即 由此&…

30个AI变现案例,太全了,赶紧实操起来

精心整理了30个AI变现案例,每一个都可以作为一个完整的副业去实践,AI时代已经来了,所有不甘于现状的朋友,都应该去下场,先把手弄脏,不要怕,实践起来! 1.【副业创业】AI剧…

Spring6学习技术|Junit

学习材料 尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解) Junit 背景 背景就是每次Test都要重复创建容器,获取对象。就是ApplicationContext和getBean两个语句。通过Spring整合Junit,可以…

【stm32】hal库学习笔记-UART/USART串口通信(超详细!)

【stm32】hal库学习笔记-UART/USART串口通信 hal库驱动函数 CubeMX图形化配置 导入LCD.ioc RTC设置 时钟树配置 设置LSE为RTC时钟源 USART设置 中断设置 程序编写 编写主函数 /* USER CODE BEGIN 2 */lcd_init();lcd_show_str(10, 10, 16, "Demo12_1:USART1-CH340&q…

Linux 上安装及卸载JDK(包含yum方式)

一、 删除JDK 1、先输入java -version查看是否安装了JDK [rootiZbp117bkiezirqkean6g3Z java-11-openjdk-11.0.21.0.9-2.0.3.al8.x86_64]# java -version openjdk version "11.0.21" 2023-10-17 LTS OpenJDK Runtime Environment (Red_Hat-11.0.21.0.9-1) (build 1…

2024牛客(4)K题

登录—专业IT笔试面试备考平台_牛客网 using i64 long long; using ll long long; constexpr ll M 1e9 7; template<class Info> struct SegmentTree {int n;std::vector<Info> info;SegmentTree() : n(0) {}SegmentTree(int n_, Info v_ Info()) {init(n_, …

堆的结构实现与应用

目录 前言: 1.认识堆 a.如何认识堆&#xff1f; b.大根堆与小根堆 c.堆应用的简单认识 2.堆的结构与要实现的功能 3.向上调整算法 4.向下调整算法 5.向堆插入数据并建堆 6.堆的大小 7.堆的判空 8.取堆顶数据 9.删除堆顶数据 10.向上调整时间复杂度 11.向下调整时…

流式存储音频/视频

目录 流式存储音频/视频 1.1 具有元文件的万维网服务器 1.2 媒体服务器 1.3 实时流式协议 RTSP 使用 RTSP 的媒体服务器的工作过程 流式存储音频/视频 “存储”音频/视频文件不是实时产生的&#xff0c;而是已经录制好的&#xff0c;通常存储在光盘或硬盘中。 传统浏览器…

初始php及其变量与常量

华子目录 什么是phpphp发展史平台支持和数据库支持网站静态网站和动态网站的区别静态网站动态网站的特点 关键名词解析服务器概念IP的概念域名DNS端口 web程序的访问流程静态网站访问流程动态网站访问流程 php标记脚本标记标准标记&#xff08;常用&#xff09; php注释php语句…

having子句

目录 having子句 having和where的区别 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 现在要求查询出每个职位的名称&#xff0c;职位的平均工资&#xff0c;但是要求显示平均工资高于 200 的职位 按照职位先进行分组&#xff0c;同…