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

Java接口规范升级 —— 给你的 Java 接口 “穿西装”(参数不瞎填,返回不乱码)

咱们实现了 “添加图书” 功能,但你有没有发现一个问题?—— 用户可以随便传数据:书名空着能加、价格填负数能加、出版时间填 “2025-13-32” 这种不存在的日期也能加,就像奶茶店不问你 “要几分糖、加不加珍珠”,直接给你做一杯 “苦到齁的珍珠奶茶”,客人肯定不满意。

更麻烦的是,接口返回格式还乱:成功时返回图书列表,失败时返回 “添加失败” 字符串,前端开发要对着两种格式写两套逻辑,像收到奶茶时,有时候是 “正常杯子装”,有时候是 “塑料袋裹着”,整理起来超麻烦。

今天这篇,咱们就给接口做 “规范化改造”:用参数校验让用户 “按规矩传数据”(书名不能为空、价格必须正数),用统一返回格式让接口 “说话一个调”(成功失败都返回 JSON,结构一致),改造完的接口就像穿了西装的奶茶店店员 —— 专业、整齐、不翻车。

一、先搞懂:为什么要做接口规范?(奶茶店的 “标准化服务” analogy)

咱们先拿奶茶店举个例子,你就懂接口规范的重要性了:

  • 没规范的奶茶店:客人说 “要一杯奶茶”,店员不问甜度、冰度、加不加料,直接做了杯 “全糖冰饮加珍珠”,客人可能不喝甜的,直接差评;
  • 有规范的奶茶店:客人点单时,店员会问 “几分糖(3/5/7 分)、什么温度(冰 / 温 / 热)、加什么料(珍珠 / 椰果 / 布丁)”,确认清楚再做,客人满意度拉满。

接口规范也是一个道理:

  • 参数校验 = 店员问清需求,避免 “瞎做”(比如书名不能为空、价格必须 > 0);
  • 统一返回格式 = 奶茶统一用 “带 logo 的杯子装”,不管是珍珠奶茶还是果茶,包装一致,客人拿得顺手(前端解析方便)。

改造前后的接口对比,一眼就能看出差别:

场景 改造前(不规范) 改造后(规范)
书名空着添加 成功添加,数据库存 “空书名” 返回 “图书名称不能为空”,拒绝添加
价格填 - 50 成功添加,数据库存 “-50” 返回 “价格必须大于 0”,拒绝添加
接口返回格式 成功:[{id:1, bookName:"Java"}];失败:"添加失败" 成功:{code:200, msg:"操作成功", data:[...]};失败:{code:400, msg:"图书名称不能为空", data:null}

二、实操 1:参数校验 —— 让用户 “按规矩传数据”(Spring Validation 上手)

参数校验用 Spring Boot 自带的spring-boot-starter-validation,不用自己写 if 判断(比如if (bookName == null) return "书名不能为空"),像给接口装了个 “自动安检机”,不符合规矩的数据直接拦下来。

步骤 1:加依赖(给安检机 “通电”)

打开pom.xml,添加参数校验的依赖,就像给奶茶店装 “点单系统”:

xml

<!-- 参数校验依赖:Spring Boot自带,不用记版本,和Spring Boot版本一致 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</dependency>

加完点 IDEA 右下角的 “Import Changes”,依赖下载完,安检机就通电了。

步骤 2:实体类加校验注解(定 “点单规矩”)

打开entity/Book.java,给需要校验的字段加注解,比如 “书名不能为空”“价格必须正数”,这些注解就是 “点单规矩”:

java

运行

package com.example.bookmanage.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import javax.validation.constraints.*; // 导入校验注解
import java.math.BigDecimal;
import java.util.Date;@Data
@TableName("book")
public class Book {@TableId(type = IdType.AUTO)private Long id;//
http://www.dtcms.com/a/558688.html

相关文章:

  • AI学习研究2025.11.1——deepseek-r1 1.5B 五轮问题下来暴露无法区别中英文
  • Dubbo 全解析:从入门到精通的分布式服务框架实战指南
  • 网站更改公司需要重新备案吗网站联盟怎么做
  • C与汇编深入分析
  • UDS中时间参数相关
  • 东莞网站制作建设项目之家
  • C++:链接的两难 —— ODR中的强与弱符号机制
  • 徐家汇网站建设秦皇岛海港区防疫人员事件
  • 长沙专业网站建设服务网站代备
  • 开始改变第七天 第一个面试
  • 网站资源做缓存做网站开发需要的笔记本配置
  • 搜索引擎网站盈利模式长沙旅游必去的八个景点
  • 如何写出让业务满意的性能测试报告?
  • 网站做数据分析整站优化seo平台
  • 烟台网站建设服务网站百度搜索不到
  • 做网站除了dw网站域名注册备案教程
  • 南华大学城市建设学院网站注册企业邮箱哪家最好
  • C++隐藏机制——extern 的边界:声明、定义与符号分配
  • 为什么选择做游戏网站做国外销售都上什么网站
  • C语言完成Socket通信
  • 关于Delphi的一次吵架的后续
  • 深圳网站制作公司兴田德润官网多少中企动力为什么留不住人
  • 怎样制造网站图片教程手机建站源码
  • 视频网站建设流程vps 内存影响 网站
  • 网站内容规划ssh做的大型网站
  • 网站正则表达式怎么做怎么样才能自己做网站打广告
  • 快速部署远程vnc桌面 -docker部署
  • 网站建设运行状况做网站需要服务器还是主机
  • 网站信息核验单南充二手房最新出售信息
  • 开发 网站 团队建设摩托车官网官方网站