当前位置: 首页 > 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.jsqmd.com/news/989480/

相关文章:

  • 2026年 新疆酒店铝单板源头厂家推荐榜单:专业定制与匠心工艺品质之选 - 品牌发掘
  • Spring Boot项目里用Netty手搓一个MQTT客户端,从连接、订阅到消息重发全流程解析
  • 用Python+NetworkX模拟社交网络中的‘跟风’行为:一个演化博弈的实战案例
  • 手把手教你用Python复现STARFM时空融合算法:从Github代码到实战避坑
  • Revit2GLTF终极指南:专业级BIM模型到Web3D的高效转换解决方案
  • 让文献管理变得可视化:Zotero Style的5大创新功能
  • C语言项目实战:用uthash库给你的自定义数据结构建个高速‘查询缓存’
  • 边缘弱网环境下的离散节点高可用组网实践与全网通工业路由器选型指南
  • 遥感图像大坝检测数据集VOC+YOLO格式8350张1类别
  • AdaCNP:极端天气下电力负荷预测的概率建模方法
  • 13ft Ladder终极指南:3分钟搭建个人付费墙绕过工具
  • AI 辅助的 K8s 资源配额推荐:从经验估算到数据驱动
  • 期货量化程序 time.sleep 卡死:天勤单线程与 deadline 替代
  • 2026齐齐哈尔市老酒回收选购技术推荐 实用避坑解析 - 优质品牌商家
  • 修车师傅的‘黑话’:一文读懂UDS诊断仪上的NRC错误码(附ISO 14229速查表)
  • Citra模拟器终极指南:3步解决黑屏闪退,畅玩3DS游戏
  • 深度解析Audiveris:基于多阶段管道的乐谱光学识别完整技术方案
  • 2026年 金属清洗剂源头厂家推荐榜:工业重油污清洗剂/防锈型清洗剂/环保水基清洗剂实力厂家直供首选 - 品牌发掘
  • 深入解析S12MSCANV2:CAN控制器消息存储与传输机制
  • BoilR完整指南:如何一键整合所有游戏平台到Steam库
  • 从硬件解析到EFI构建:OpCore-Simplify如何重塑黑苹果配置体验
  • 科学文献结构化数据提取:本体工程与知识图谱实践
  • 用C51单片机+蜂鸣器复刻《起风了》:手把手教你从乐谱到代码的完整流程(Keil uVision5环境)
  • Windows系统优化神器:Win11Debloat一键清理让你的电脑飞起来
  • 数据的加密与解密(02:36)
  • MC9S12G汽车MCU选型、硬件设计与软件开发实战指南
  • 2026年国内top5有机肥厂家盘点:哪家茶叶肥料好/四川肥料厂家品牌推荐/四川肥料厂家推荐/实力品牌全解析 - 优质品牌商家
  • 从游戏碰撞检测到物流路径规划:Python计算点到多边形距离的3个实战场景
  • 3D高斯溅射与零样本全景分割技术解析
  • 2026年6月牡丹江市五粮液回收权威机构排行 - 优质品牌商家