当前位置: 首页 > news >正文

后端的异常和保护机制

在搭建完简单的springboot的后端整体框架后包括maven的基本框架,为了处理和正常的异常反馈,我们并不是直接在controller中直接返回数据处理和接受的结果,因为这会出现以下两种情况

一:出现很多的冗余数值,二:出现数据库泄露的危机,因此我们需要在controller层以及前端之间增加一层安全层规划输出以及保护数据库的内容

改造前 前端发送 Controller { "title": "买菜", → Task 对象: "priority": "HIGH" } id = null ← 不该有 title = "买菜" description = null status = null ← 不该有 priority = "HIGH" createdAt = null ← 不该有 → 返回 Task 给前端: { "id":1, "createdAt":"...", "status":"TODO", ... } 全暴露出去了! 改造后 前端发送 Controller { "title": "买菜", 1. CreateTaskRequest 只接收: "priority": "HIGH" } title = "买菜" priority = HIGH (枚举) + @Valid 校验字段合法性 2. Service 转成 Task Model 3. 返回前 TaskResponse.from() 只输出: { "id":1, "title":"买菜", "priority":"HIGH" } 干净,只返回该返回的

所以我增加了一层dto正常反馈输出以及exception层处理异常内容,并且返回我自己规定好的格式以便于后续开发的便利性,能直接明显的读出代码发生错误的地方

这是其中的部分代码

package com.agent.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; public class CreateTaskRequest { @NotBlank(message = "任务标题不能为空") @Size(min = 2, max = 100, message = "标题长度必须在 2-100 之间") private String title; @Size(max = 500, message = "描述不能超过 500 字") private String description; @NotNull(message = "优先级不能为空") private Priority priority; // 枚举:HIGH, MEDIUM, LOW // Getter / Setter public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Priority getPriority() { return priority; } public void setPriority(Priority priority) { this.priority = priority; } }

源代码和整体指导文档我放在了wanlte/agent

http://www.rkmt.cn/news/1501227.html

相关文章:

  • C语言项目实战:用uthash库给你的自定义数据结构建个高速‘查询缓存’
  • 遥感图像大坝检测数据集VOC+YOLO格式8350张1类别
  • 边缘弱网环境下的离散节点高可用组网实践与全网通工业路由器选型指南
  • 期货量化程序 time.sleep 卡死:天勤单线程与 deadline 替代
  • 2026齐齐哈尔市老酒回收选购技术推荐 实用避坑解析 - 优质品牌商家
  • Citra模拟器终极指南:3步解决黑屏闪退,畅玩3DS游戏
  • 从硬件解析到EFI构建:OpCore-Simplify如何重塑黑苹果配置体验
  • 数据的加密与解密(02:36)
  • 科学文献结构化数据提取:本体工程与知识图谱实践
  • 用C51单片机+蜂鸣器复刻《起风了》:手把手教你从乐谱到代码的完整流程(Keil uVision5环境)
  • Windows系统优化神器:Win11Debloat一键清理让你的电脑飞起来
  • 2026年6月牡丹江市五粮液回收权威机构排行 - 优质品牌商家
  • 从游戏碰撞检测到物流路径规划:Python计算点到多边形距离的3个实战场景
  • 2026目前靠谱的地坪翻新企业排行参考 - 品牌排行榜
  • Unlock Music Electron:3步解锁加密音乐,重新掌握你的数字音乐所有权
  • Maccy:macOS剪贴板历史管理的高效解决方案
  • Cursor Pro 高效开发五步法:从意图建模到PR级语义协同
  • 别再东拼西凑了!SAP BP主数据维护,用CVI_EI_INBOUND_MAIN这一个BAPI就够了(附完整ABAP代码)
  • 企业级虚拟显示驱动架构深度解析:基于Parsec VDD的高性能多屏解决方案
  • 双曲几何在圆形数据统计推断中的应用解析
  • 深入解析IIC总线协议与MC9S12HZ256实战配置
  • S12XDBG硬件调试模块:从总线窥探到精准触发的嵌入式调试实战
  • S12CPMU嵌入式时钟复位电源管理模块原理与实战配置详解
  • d2s-editor:让暗黑破坏神2存档编辑变得简单直观
  • 2026宜宾门窗定制厂家评测:靠谱选型全维度对比 - 优质品牌商家
  • 用STM32F103C8T6做个光控窗帘:从Proteus 8.9仿真到Keil 5代码烧录全流程
  • AI论文解读专栏:NLP前沿研究月度速览
  • 3分钟搞定文档下载:kill-doc如何让你告别广告弹窗和强制登录
  • Fast-GitHub插件:让国内GitHub访问速度提升10倍的终极解决方案
  • 成都软装技术全链路解析 米小布装饰服务推荐 - 优质品牌商家