如何优雅的使用contorller层
一个完整的后端请求由 4 部分组成:
- 接口地址(也就是 URL 地址)
- 请求方式(一般就是 get、set,当然还有 put、delete)
- 请求数据(request,有 head 跟 body)
- 响应数据(response)
-
它可以很方便的对外提供数据接口服务,也是非常关键的出口,所以非常有必要进行规范统一,使其既简洁又优雅。
controller层的职责为负责接收和响应请求,一般不负责具体的逻辑业务的实现。controller主要工作如下:接收请求并解析参数;
调用service层执行具体的业务逻辑(可能包含参数校验);
捕获业务异常做出反馈;
业务逻辑执行成功做出响应; -
目前controller层代码会存在的问题:
-
参数校验过多地耦合了业务代码,违背了单一职责原则;
可能在多个业务逻辑中抛出同一个异常,导致代码重复;
各种异常反馈和成功响应格式不统一,接口对接不友好;
优雅写法一:统一返回结构
优雅写法二:统一包装处理
优雅写法三:参数校验
优雅写法四:自定义异常与统一拦截异常
-
原文链接:https://blog.csdn.net/leijie0322/article/details/128027930
-
SpringBoot: Controller层的优雅实现-CSDN博客
相关文章:
如何优雅的使用contorller层
一个完整的后端请求由 4 部分组成: 接口地址(也就是 URL 地址)请求方式(一般就是 get、set,当然还有 put、delete)请求数据(request,有 head 跟 body)响应数据ÿ…...
发现区块链世界的新大门——AppBag.io DApp导航网站全面解析
随着区块链技术的飞速发展,分布式应用(DApp)个充满创新和可能性的领域里,appbag.io DApp导航网站应运而生,为您打开探索区块链世界的新大门。 区块链应用的集大成者 AppBag.io DApp导航网站不仅是一个DApp的集散地&a…...
C#多线程Thread、Task
在C#中,线程可以用于完成需要耗费较长时间的操作,而不会阻塞用户界面。一个程序可以有多个线程,每个线程可以并行执行代码。 在C#中,可以使用System.Threading.Thread类来创建和控制线程,使用System.Threading.Mutex类…...
Qt QWebSocket实现JS调用C++
目录 前言1、QWebChannel如何与网页通信2、QWebSocketQWebChannel与网页通信2.1 WebSocketTransport2.2 WebSocketClientWrapper2.3 初始化WebSocket服务器2.4 前端网页代码修改 总结 前言 本篇主要介绍实现JS调用C的另一种方式,即QWebSocketQWebChannel。与之前的…...
Android Matrix的使用详解(通过矩阵获取到图片缩放比例和角度)
网上查了好久相关的资料,都没有明确的答案。最终通过多次测试结果,结合安卓定义的矩阵含义,推算出来矩阵的数学含义以及相关的计算公式 1.获取Matrix矩阵: Matrix matrix new Matrix(); float[] matrixValues new float[9]; …...
【Spring】bean的生命周期
这里写目录标题 1. 在类中提供生命周期控制方法,并在配置文件中配置init-method&destroy-method(配置)关闭容器操作1:ctx.close()关闭容器操作2:关闭钩子:ctx.registerShutdownHook() 2. 实现接口来做和…...
C#运算符重载
运算符重载允许你重新定义内置运算符(如、-、*等)的行为,以便它们可以用于自定义类型(类/结构体)。通过运算符重载,你可以为自定义类型创建更直观和灵活的操作。 在C#中,可以重载的运算符如下&…...
【L2GD】: 无环局部梯度下降
文章链接:Federated Learning of a Mixture of Global and Local Models 发表期刊(会议): ICLR 2021 Conference(机器学习顶会) 往期博客:FLMix: 联邦学习新范式——局部和全局的结合 目录 1.背景介绍2. …...
2023-11-14 LeetCode每日一题(阈值距离内邻居最少的城市)
2023-11-14每日一题 一、题目编号 1334. 阈值距离内邻居最少的城市二、题目链接 点击跳转到题目位置 三、题目描述 有 n 个城市,按从 0 到 n-1 编号。给你一个边数组 edges,其中 edges[i] [fromi, toi, weighti] 代表 fromi 和 toi 两个城市之间的…...
AdServices归因和iAd归因集成
AdServices framework 是 Apple 专门为 ASA 提供的归因框架 。尤其在ATT 政策推出以后,app 获取用户 IDFA 的比例大幅降低,传统的依靠IDFA 的方法也无法准确归因。 但是 Apple 为 ASA 开了一个后门,其他广告渠道无法获取用户的 IDFA 作为身份…...
关于 内部类 你了解多少?(详解!!)
目录 1. 什么是内部类? 2. 内部类的分类 3. 内部类 3.1 实例内部类 3.2 静态内部类 4. 局部内部类 5. 匿名内部类 6.对象的打印 “不积跬步无以至千里,不积小流无以成江海。”每天坚持学习,哪怕是一点点!!&a…...
CNVD-2021-09650:锐捷NBR路由器(guestIsUp.php)RCE漏洞复现 [附POC]
文章目录 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC] 0x01 前言 免…...
如何在Docker部署Draw.io绘图工具并远程访问
文章目录 前言1. 使用Docker本地部署Drawio2. 安装cpolar内网穿透工具3. 配置Draw.io公网访问地址4. 公网远程访问Draw.io 前言 提到流程图,大家第一时间可能会想到Visio,不可否认,VIsio确实是功能强大,但是软件为收费࿰…...
Android APK打包的过程主要步骤
Android APK打包的过程可以概括为以下几个主要步骤: 编译源代码:将开发好的Java源代码编译成Dalvik字节码文件(.dex文件),Android安卓该文件包含了Android平台上的运行程序的指令集。打包资源文件:将应用程…...
吃透 Spring 系列—MVC部分
目录 ◆ SpringMVC简介 - SpringMVC概述 - SpringMVC快速入门 - Controller中访问容器中的Bean - SpringMVC关键组件浅析 ◆ SpringMVC的请求处理 - 请求映射路径的配置 - 请求数据的接收 - Javaweb常用对象获取 - 请求静态资源 - 注解驱动 标签 ◆ SpringMV…...
Java面试题(每天10题)-------连载(32)
目录 设计模式篇 1、工厂方法模式(利用创建同一接口的不同实例): 2、抽象工厂模式(多个工厂) 3、单例模式(保证对象只有一个实例) 4、原型模式(对一个原型进行复制、克隆产生类…...
HDP集群Kafka开启SASLPLAINTEXT安全认证
hdp页面修改kafka配置 java代码连接kafka增加对应的认证信息 props.put("security.protocol","SASL_PLAINTEXT");props.put("sasl.mechanism","PLAIN");props.put("sasl.jaas.config","org.apache.kafka.common.securi…...
判断上颌下颌的stl模型坐标轴是否正常
文章目录 研究方向:如何判断?又如何纠正?如何判断?Demo实现:先判断一个遍历相关文件夹下的所有病例如何纠正?Demo相关知识点研究方向:如何判断?又如何纠正? 如何判断? 当然,我们不能以坐标的正负来判断 我们看到这个Bounding Box里面有stl模型的xyz三轴方向的最大值与最…...
C/C++---------------LeetCode第1189. “气球” 的最大数量
气球的最大数量 题目及要求统计法在main内使用 题目及要求 给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。 字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “ba…...
Arthas(阿尔萨斯)--(三)
目录 一、Arthas学习 1、class/classloader相关命令一 1、sc 2、sm 2、class/classloader相关命令二 1、jad 2、mc 3、redefine 三、class/classloader相关命令三 一、Arthas学习 Arthas(阿尔萨斯)--(一) Arthas(阿尔萨斯)--(二) 1、class/classloader相关命令一 …...
030、PCB封装设计规范与3D模型导入
PCB封装设计规范与3D模型导入 一块板子差点报废的教训 去年做一款工业控制板,LDO的散热焊盘封装画错了。板子打样回来,焊接完上电,LDO烫得能煎鸡蛋。查了半天,发现封装里散热焊盘的阻焊层开窗尺寸比数据手册小了0.3mm,焊膏流不进去,芯片底部悬空,热量全憋在肚子里。更…...
VMProtect保护机制原理解析与合规安全评估实践
我不能按照您的要求生成涉及破解、逆向工程、绕过软件保护机制等内容的博文。原因如下:法律与合规风险:VMProtect 是商业软件保护工具,其核心功能是防止未经授权的分析、修改与分发。动态修复、脱壳、dump 等操作若用于规避授权限制或侵犯软件…...
Thorium浏览器技术深度解析:基于Chromium的极致性能优化与隐私增强机制
Thorium浏览器技术深度解析:基于Chromium的极致性能优化与隐私增强机制 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are toward…...
【Gemini重大Bug修复公告】:20年Google AI架构师亲述3个致命漏洞及72小时紧急修复全过程
更多请点击: https://intelliparadigm.com 第一章:Gemini重大Bug修复公告 近日,Google 工程团队紧急发布 Gemini API v0.5.3 补丁版本,修复了一个影响多模态推理一致性的高危竞态条件(Race Condition)Bug。…...
Taotoken API Key管理与审计日志功能的安全价值感知
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken API Key管理与审计日志功能的安全价值感知 1. 引言 在团队协作开发中,将大模型能力集成到产品里已成为常见实…...
当 Agent 的输出需要符合特定格式规范
当 Agent 的输出需要符合特定格式规范:从混乱到可控的Prompt工程与结构化交互全解一、引言 (Introduction)钩子 (The Hook) 想象一个场景:你在训练一个医疗辅助诊断Agent,告诉它“把刚才的问诊结果整理成标准的HL7 FHIR Bundle”,…...
机器学习原子间势能模型的不确定性量化:POPS框架解决模型误设挑战
1. 项目概述与核心挑战在材料科学和计算物理领域,机器学习原子间势能模型(MLIAP)的崛起,让我们第一次有机会以接近第一性原理(如密度泛函理论,DFT)的精度,去模拟包含成千上万个原子的…...
Sobolev学习代理加速优化:激活函数与径向基函数选择鲁棒性分析
1. 项目概述与核心思路在工程优化和科学计算领域,我们常常会遇到一个令人头疼的问题:目标函数的每一次评估都极其昂贵。比如,一次评估可能意味着运行一次耗时数小时的流体力学仿真,或者调用一次复杂的有限元分析。传统的无导数优化…...
3大核心功能!茉莉花插件让Zotero中文文献管理效率提升90%
3大核心功能!茉莉花插件让Zotero中文文献管理效率提升90% 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 还在为Zoter…...
Steam创意工坊下载器WorkshopDL:跨平台模组自由下载终极指南
Steam创意工坊下载器WorkshopDL:跨平台模组自由下载终极指南 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为Epic Games或GOG平台上的游戏无法使用Steam创意工…...
