微服务——参数校验

ops/2024/9/25 21:26:14/

微服务校验常用的方式有:

1、数据库约束:在数据库中设置数据的相关约束,如字段长度、类型等,来确保数据的正确性。
2、 后端校验:在后端进行数据的校验,如参数校验、业务校验等,来确保数据的合法性。
3、 前端校验:在前端进行数据的校验,如表单校验、数据格式校验等,来确保用户输入数据的正确性。
4、 消息队列校验:在消息队列中,对消息进行校验,确保消息的内容符合业务要求,以保证后续的流程的正确性。
5、 API 校验:对 API 接口进行校验,确保 API 接口的参数格式、数据类型、合法性等

使用Spring Boot的注解校验能够带来以下优势:

1、方便快捷:使用注解校验可以简单地将校验规则与被校验对象绑定在一起,无需手动编写复杂的校验逻辑。

2、 高效可靠:使用注解校验可以快速发现校验错误,有效增加应用程序的可靠性。注解校验是在Java Bean Validation API的基础上开发的,可靠性有保证。

3、 代码简洁:使用注解校验可以省去大量的校验代码,大大减少了代码量。

4、易于维护:使用注解校验可以有效降低代码的复杂度,使得代码容易维护和修改。

5、可扩展性:使用注解校验可以通过自定义注解实现更为复杂的校验规则,增强了校验的灵活性和可扩展性。

这里我们使用注解的方式进行参数校验,SpringBoot中常用的用于参数校验的注解如下:

@AssertFalse 所注解的元素必须是Boolean类型,且值为false
@AssertTrue 所注解的元素必须是Boolean类型,且值为true
@DecimalMax 所注解的元素必须是数字,且值小于等于给定的值
@DecimalMin 所注解的元素必须是数字,且值大于等于给定的值
@Digits 所注解的元素必须是数字,且值必须是指定的位数
@Future 所注解的元素必须是将来某个日期
@Max 所注解的元素必须是数字,且值小于等于给定的值
@Min 所注解的元素必须是数字,且值小于等于给定的值
@Range 所注解的元素需在指定范围区间内
@NotNull 所注解的元素值不能为null
@NotBlank 所注解的元素值有内容
@Null 所注解的元素值为null
@Past 所注解的元素必须是某个过去的日期
@PastOrPresent 所注解的元素必须是过去某个或现在日期
@Pattern 所注解的元素必须满足给定的正则表达式
@Size 所注解的元素必须是String、集合或数组,且长度大小需保证在给定范围之内
@Email 所注解的元素需满足Email格式

注解使用的问题

String类型不能用@NotNull,更换@NotEmpty即校验成功

@NotNull:
不能为null,但可以为empty(“”," “,” “) ,一般用在基本数据类型的非空校验上,而且被其标注的字段可以使用 @size/@Max/@Min对字段数值进行大小的控制
@NotEmpty:
不能为null,而且长度必须大于0(” “,” "),一般用在集合类上面
@NotBlank:
不能为null,注意是只能用在String上,而且调用trim()后,长度必须大于0

简述三者区别
@NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0)。
@NotEmpty://CharSequence, Collection, Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0。
@NotBlank://String 不能是 null 且去除两端空白字符后的长度(trimmed length)大于 0。


http://www.ppmy.cn/ops/50549.html

相关文章

AI玩具来了,它怎么样?

90后的我们,是AI时代的见证者。20后的小孩,才是AI时代的原著民。当ChatGPT们改变着大人的工作方式,我觉得,是时候让孩子们的玩具也更聪明些了吧。于是,在六一前夕,我用市面上的AI语音对话套件给娃DIY了一套…

github基础使用

前言 将用到的github指令记录下来,持续更新,方便随时查找学习。 一、github用到的指令 1、我们从github克隆下来的代码版本一般都是master主分支,我们要建立自己的分支进行修改: //git branch //查看目前的分支/* * master /…

李宏毅2023机器学习作业HW06解析和代码分享

ML2023Spring - HW6 相关信息: 课程主页 课程视频 Sample code HW06 视频 HW06 PDF 个人完整代码分享: GitHub | Gitee | GitCode P.S. HW06 是在 Judgeboi 上提交的,出于学习目的这里会自定义两个度量的函数,不用深究,遵循 Sugge…

1.1. 大数定律-独立性

独立性 1. 独立性的定义1.1. 两个事件、两个随机变量、两个 σ \sigma σ-代数独立1.2. 多事件、多个 σ \sigma σ-代数、多个随机变、多个事件独立1.3. 成对独立和独立的关系 2. 独立性的充分条件3. 独立向量的分布和期望3.1. 独立向量的分布3.2. 独立随机变量乘积期望3.2.1…

顶级管理者的新视角:管理状态而非时间

在快节奏的商业环境中,时间管理常被看作是提升效率和效果的关键因素。然而,对于顶级管理者来说,仅仅管理时间可能并不足够。一个更深层、更全面的管理方式——管理状态,正在成为新的趋势。在这篇文章中,我们将探讨为什…

Vue的学习(6.19)

一、Vue的特点 1.采用组件化模式(xxx.vue包含htmlcssjs) 2.声明式编码,编码人员无需直接操作DOM,提高开发效率 3.使用虚拟DOM优秀的DIFF算法,尽量复用DOM节点

R 绘图 - 条形图

R 绘图 - 条形图 条形图是数据可视化中最常用的图表类型之一,它能够直观地展示不同类别之间的比较。在 R 语言中,制作条形图非常简单,得益于其丰富的图形库和灵活的绘图系统。本文将详细介绍如何在 R 中创建和定制条形图,包括基本…

[Linux] 文件系统

UNIX操作系统将文件组织成一个有层次的树形结构: 标准目录: 根目录: /tmp目录 主目录: 这就是主目录 一般与系统有关的信息都存放在etc目录下 注意: /etc/passwd存放的是用户账户信息,不是密码信息&#xf…