vue axios 请求过滤空值

过滤判断请求参数中是否是有字符串、空对象、空数组、null、undefined、NaN中的一个,不包含数字0


一、npm安装 lodash 包

二、request.js 请求拦截配置

point:

1、请求拦截器中添加对 params / data 传参的空值判断

2、针对文件上传类的接口,需要屏蔽空值校验,否则会出错。—— 如在文件上传类的接口当中添加 noEmptyCheck 字段,过滤校验。

import axios from 'axios';
import { pickBy } from 'lodash';
import { isEmpty } from '@/utils/utils';// 创建 axios 实例
const service = axios.create({// axios中请求配置有baseURL选项,表示请求URL公共部分baseURL,// 超时timeout: 30000
});// 添加请求拦截器
service.interceptors.request.use((config) => {// 是否需要设置 token,如果请求中自带了Authorization,就不向cookie中取const isToken = !!(config.headers || {}).Authorization;// 在发送请求之前做些什么 tokenif (getToken() && !isToken) {config.headers['Authorization'] = 'Bearer ' + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改}// 传参时如果为空或null,不传该字段// 【注】:这里不用lodash的isEmpty,因为空格和数字0无法正确判断if(!config.noEmptyCheck) {if(config.params) {config.params = pickBy(config.params, parameter => !isEmpty(parameter));}if(config.data) {config.data = pickBy(config.data, parameter => !isEmpty(parameter));}}return config;},(error) => {// 对请求错误做些什么return Promise.reject(error);}
);// 导出 axios 实例
export default service;
/*** 判断某个值是否是空字符串、空对象、空数组、null、undefined、NaN中的一个,不包含数字0* @param {*} val*/
export function isEmpty(val) {let flag = false;const type = Object.prototype.toString.call(val);switch (type) {// 空字符串case '[object String]':if(val.trim() === '') {flag = true;}break;// nullcase '[object Null]':flag = true;break;// undefinedcase '[object Undefined]':flag = true;break;// NaNcase '[object Number]':if(isNaN(val)) {flag = true;}break;// 空数组case '[object Array]':if(val.length === 0) {flag = true;}break;// 空对象case '[object Object]':if(Object.keys(val).length === 0) {flag = true;}break;}return flag;
}

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

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

相关文章

AI大模型探索之路-训练篇17:大语言模型预训练-微调技术之QLoRA

系列篇章💥 AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据集概…

HKT x Microsoft 365 Copilot 助力企业提升工作效率

人工智能(AI)在工作场所的应用和整合日益增多,更成为塑造未来工作模式的革新趋势之一。AI不仅简化和改进了许多任务和流程,还为协作、沟通和创新开辟了新的机遇。不久前,微软新推出AI驱动的生成式生产力工具— Microso…

移除链表元素题目讲解

一:题目 二:思路讲解 方法一: 1:创建两个指针prev和cur,初识位置cur为head,prev为NULL,然后两个指针往后移动开始去寻找与val值吻合的节点,最后找到节点的时候,cur指向…

基于springboot实现体育馆管理系统项目【项目源码+论文说明】

基于springboot实现体育馆管理系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理…

fiori SAP ui5 动态改变控件颜色

使用CustomData动态改变控件颜色 有时候我们需要改变控件颜色,对于高度封装的控件,显然改变控件CSS是比较困难的,幸好SAP UI5预设了一个customData的属性,每个控件都能使用她。 如下代码是判断汇率是否有改变,如果改…

delphi6直连redis服务(用lua脚本redis模块)

一、创建一个exe程序 创建一个exe程序,引用LuaRedis.pas单元(此单元自己封装的代码,目前主要封装了获取key和设置key/value功能),代码如下: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;type…

Watchdog,一双专为 Python 而生的守护者之眼

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 一个简单的库,也许能够开启我们的智慧之门, 一个普通的方法,也许能在危急时刻挽救我们于水深火热, 一个新颖的思维方式,也许能…

自动驾驶 | 仿真测试-HiL测试全解析

1.HiL 的定义 HiL(Hardware-in-the-Loop)硬件在环是计算机专业术语,也即是硬件在回路。通过使用 “硬件在环”(HiL) ,可以显著降低开发时间和成本。在过去,开发电气机械元件或系统时,使用计算机仿真和实际的实验就已经…

【Linux】基础知识

常识 Linux命令行操作效率远大于图形界面,so… Linux终端打开时,默认以用户的home目录为当前工作目录 命令形式:command [-options] [parameter]; 多个参数同时使用时: ls -l -a; ls -la; ls -al; 多个参数同时使用三…

runc 文件描述符泄漏导致容器逃逸漏洞(CVE-2024-21626)

阿里云安全公告 阿里云产品关于 runc的安全问题(CVE-2024-21626)影响声明 升级 runc 升级runc版本号 > 1.1.12 查看runc 当前版本号 root####:~# runc --version runc version 1.1.9 commit: v1.1.9-0-gccaecfc spec: 1.0.2-dev go: go1.20.8 li…

antd vue pro (vue 2.x) 多页签详细操作

antd vue pro 多页签配置操作,具体操作如下。 1.引入 tagviews文件 在 store/modules 中创建 tagviews.js ,复制一下代码到文件中保存 const state {visitedViews: [],cachedViews: [] }const mutations {ADD_VISITED_VIEW: (state, view) > {if …

Element-ui-vue3-前端界面开发-配置-编辑main.js-nodejs基础语法-vue3-html模板语法-vue文件编译

前端配置 1.下载nodejs 18 lts2.配置nodejs和安装vue3.vue调试技巧3.1.debugger3.2.vue devtools4.编辑main.js5.nodejs基础语法5.1.import5.1.1.导入单个模块或组件5.1.2.导入整个模块或库5.1.3.导入默认导出5.1.4.导入 css文件5.1.5.导入模块和组件5.2.export5.2.1.命名导出5…

数学建模资料|历年数维杯数学建模竞赛真题及获奖论文汇总

2024年第九届数维杯大学生数学建模挑战赛:2024年5月10日08:00-5月13日09:00举行,为了更好的帮助参赛同学了解竞赛的赛制及赛题特点,数乐君今天给大家整理了历年数维杯国赛真题及优秀论文,方便同学们赛前巩固训练,掌握解题方法,提高获奖率。 2023年数维杯国赛真题(ABC题…

Ponder-C++反射库入门

Ponder-C反射库入门 前言CMakeVS2022构建Demo环境搭建 前言 Ponder:Expose C classes and objects so they can used as data. Serialisation and Lua scripting supported 公开C类和对象,以便他们用作数据。且支持徐丽华和Lua脚本绑定。 github地址&am…

如何在没有备份的情况下恢复 Mac 上丢失的数据

如果您因意外删除、错误格式化硬盘或文件损坏而丢失了重要的、感伤的文件、照片或音乐,那么这可能会令人非常痛苦。幸运的是,您有几个选择。 您的 Mac 位于数字宇宙的中心。您可能会在上面留下照片和视频形式的记忆,以及来自您不再见面的朋友…

Java使用JSch实现SSH远程执行命令

前言 有一个奇怪的需求,就是将本地的内容直接提交到远程服务器,并且需要针对文件夹进行处理。所以,这里就直接采用JSch来实现。在这里,感谢秀发浓密的程序猿的这篇博客,给了很大启发。 思路 既然是直接读取文件夹&am…

前端如何设置div可滚动,且设置滚动条颜色

在前端中,设置 div 为可滚动并通过 CSS 自定义滚动条的颜色并不是所有浏览器都直接支持的功能,因为滚动条的样式在很大程度上取决于操作系统和浏览器的默认样式。然而,你可以使用某些 CSS 属性来尝试自定义滚动条的外观,这些属性在…

C语言 | Leetcode C语言题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; void swap(int *a, int *b) {int t *a;*a *b, *b t; }void sortColors(int *nums, int numsSize) {int p0 0, p2 numsSize - 1;for (int i 0; i < p2; i) {while (i < p2 && nums[i] 2) {swap(&nums[i], &num…

Linux系统 -- 创建systemd服务单元 Python 程序在系统启动时自动启动,并持续运行。

1. 创建一个名为 model_ai.service 的文件&#xff0c;并将其放置在 /etc/systemd/system/ 目录中。 2. 命令创建和编辑文件 sudo vim /etc/systemd/system/model_ai.service 3. 在打开的编辑器中&#xff0c;添加以下内容&#xff1a; [Unit] DescriptionModel AI Python S…

【C/C++基础】Lambda 表达式

文章目录 介绍 lambda谓词lambda 表达式的形式 向 lambda 传递参数使用捕获列表值捕获引用捕获隐式捕获 指定 lambda 返回类型返回 void 类型使用尾置返回类型 介绍 lambda 我们在自定义排序中经常看到如下代码&#xff1a; sort(nums.begin(), nums.end(), [](const int&…