Java后端Controller参数校验的一些干货及问题~

server/2025/1/23 0:45:35/

你们好,我是金金金。

在这里插入图片描述

场景

先看如下一张图,这是一个控制器里面的一个方法,第一眼是不是就感觉代码量非常多?而且随着参数越来越多 你则需要写nif else来完成校验,属实是麻烦而且不够优雅

在这里插入图片描述

JSR303校验

仔细认真看,更容易理解吸收,想想什么层面需要做校验呢?

  • 前端请求后端接口传输参数,是在controller中校验还是在Service中校验?

都需要校验,只是分工不同。

  • Contoller中校验请求参数的合法性,包括:必填项校验,数据格式校验,比如:是否是符合一定的日期格式,等。

  • Service中要校验的是业务规则相关的内容,比如:课程已经审核通过所以提交失败。

  • Service中根据业务规则去校验不方便写成通用代码,Controller中则可以将校验的代码写成通用代码。

  • Service层,校验是和业务逻辑紧密相关的。因为不同的业务场景下,校验规则可能不同,很难将这些规则抽象成通用的代码。 比如,在处理订单的Service层中,校验的逻辑可能会涉及多个业务条件和数据库查询,这些条件可能只在特定的业务场景下适用,难以通用化。

    • 所以一般service层都是手动if校验


http://www.ppmy.cn/server/160605.html

相关文章

【漫话机器学习系列】053.梯度爆炸(Exploding Gradient Problem)

梯度爆炸(Exploding Gradient Problem) 定义 梯度爆炸是指在深度神经网络的训练过程中,由于梯度的值在反向传播时不断累积,导致梯度变得非常大,以至于模型无法正常学习。这种现象在深层网络或循环神经网络&#xff0…

Hadoop集群搭建

1. 安装并配置虚拟机 这里基于VmWare来去构建三台虚拟机 我已经有了一台模板虚拟机,所以基于该模板虚拟机进行完整克隆得到三台机器,分别是hadoop1、hadoop2、hadoop3 修改主机名称 # hadoop1的主机名称修改为hadoop1,以此类推 vim /etc/ho…

4.C++中的循环语句

C中的循环语句 for 循环 for 循环是一种最常用的循环结构&#xff0c;通常用于已知循环次数的情况。 基本语法&#xff1a; for (初始化表达式; 条件表达式; 更新表达式) {// 循环体&#xff0c;当条件表达式为真时执行 }例如&#xff1a; #include <iostream> usin…

数据库存储上下标符号,sqlserver 2008r2,dm8

sqlserver 2008r2&#xff1a; 数据类型需要用nvarchar插入数据时字符串前需要用N create table test( col1 varchar(50), col2 nvarchar(50) ) insert into test(col1,col2) values(U⁴⁵⁶⁷⁸⁹⁰D₁₂₃₄₅₆₇₈₉₀,U⁴⁵⁶⁷⁸⁹⁰D₁₂₃₄₅₆₇₈₉₀) insert into…

如何用AI智能生成PPT,提升工作效率和创意

如何用AI智能生成PPT&#xff0c;提升工作效率和创意&#xff01;在这个信息爆炸的时代&#xff0c;我们每个人的时间都变得尤为珍贵&#xff0c;尤其是在繁忙的工作中&#xff0c;如何更高效地完成任务变得至关重要。制作PPT往往让人既头痛又心烦。面对大量的内容整理和设计&a…

【Vim Masterclass 笔记24】S10L43 + L44:同步练习10 —— 基于 Vim 缓冲区的各类基础操作练习(含点评课)

文章目录 S10L43 Exercise 12 - Vim Buffers1 训练目标2 操作指令2.1. 打开 buf* 文件2.2. 查看缓冲区 View the buffers2.3. 切换缓冲区 Switch buffers2.4. 同时编辑多个缓冲区 Edit multiple buffers at once2.5. 缓冲区的增删操作 Add and delete buffers2.6. 练习 Vim 内置…

K8S中Pod控制器之CronJob(CJ)控制器

CronJob 控制器是 Kubernetes 中用于周期性执行任务的一种控制器&#xff0c;它基于 Job 控制器来创建和管理作业。以下是 CronJob 的一些关键特点&#xff1a; 周期性调度&#xff1a;CronJob 允许您定义一个基于时间的调度&#xff0c;类似于 Linux 的 cron 工具&#xff0c;…

MindAgent:基于大型语言模型的多智能体协作基础设施

2023-09-18 &#xff0c;加州大学洛杉矶分校&#xff08;UCLA&#xff09;、微软研究院、斯坦福大学等机构共同创建的新型基础设施&#xff0c;目的在评估大型语言模型在游戏互动中的规划和协调能力。MindAgent通过CuisineWorld这一新的游戏场景和相关基准&#xff0c;调度多智…