news 2025/12/24 6:06:32

如何设计一个优秀的接口?统一结果返回值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何设计一个优秀的接口?统一结果返回值

文章目录

  • ✨ 一、接口的统一返回值是什么?
  • ✨ 二、为什么要统一返回值?
  • ✨ 三、怎么做?(带代码实现)
      • 1. 先定义统一返回体 ResponseResult
      • 2. 在Controller层中用
      • 3. 全局异常统一放回

✨ 一、接口的统一返回值是什么?

它是一件外套,把所有接口的返回内容装进同一套格式里。无论请求成功还是出错,都给前端返回固定结构,比如:

{"code":200,"message":"OK","data":{...}}

像讲故事时总是用“开头、正文、结尾”一样,你的接口也需要固定的句式,让对方不用猜今天你会不会突然换腔调。

常见结构会包含:

  • code业务状态码(不是 HTTP 状态码)

  • message提示信息(成功/失败原因)

  • data业务数据

  • timestamp(可选)响应时间

  • traceId(可选)链路追踪辅助

🎐 这让你的接口像带格式的礼物盒,不会乱七八糟。


✨ 二、为什么要统一返回值?

这一段像在写接口的“生存理由”:

  1. 前端更好处理
    前端只需要写一套判断逻辑,比如code === 200 OK。如果每个接口都长得不一样,前端会像解一个拼不出来的拼图。

  2. 调试更舒服
    报错结构一致,日志里查问题一眼看穿。

  3. 团队协作不会混乱
    新人写接口也不用再纠结“到底怎么返回”。

  4. 更适合大项目/中台
    各个服务统一语言,像所有人都用同一个字典。

  5. 可以扩展功能
    比如自动加 traceId、自动包装异常、全局异常处理等等,统一返回是基础。


✨ 三、怎么做?(带代码实现)

这一步像搭一座小桥,把规范送到所有接口上。


1. 先定义统一返回体 ResponseResult

@DatapublicclassR<T>{privateIntegercode;privateStringmessage;privateTdata;publicstatic<T>R<T>success(Tdata){R<T>r=newR<>();r.setCode(200);r.setMessage("success");r.setData(data);returnr;}publicstatic<T>R<T>fail(Stringmessage){R<T>r=newR<>();r.setCode(500);r.setMessage(message);returnr;}}

2. 在Controller层中用

@GetMapping("/user/{id}")publicR<User>getUser(@PathVariableLongid){Useruser=userService.getById(id);returnR.success(user);}

3. 全局异常统一放回

@RestControllerAdvicepublicclassGlobalExceptionHandler{@ExceptionHandler(Exception.class)publicRhandleException(Exceptione){returnR.fail(e.getMessage());}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/12 2:48:05

Wan2.2-T2V-A14B在实时视频生成方向的技术展望

Wan2.2-T2V-A14B在实时视频生成方向的技术展望 你有没有想过&#xff0c;未来拍电影可能不再需要摄影机、灯光组和长达数月的后期制作&#xff1f;只需要一句描述&#xff1a;“一个穿红色汉服的女孩在春天的樱花树下旋转&#xff0c;风吹起她的长发和裙摆&#xff0c;花瓣缓缓…

作者头像 李华
网站建设 2025/12/12 2:46:43

基于ACO蚁群优化算法的多车辆含时间窗VRPTW问题求解matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.部分程序 4.算法理论概述 5.完整程序 1.程序功能描述 带时间窗的多车辆路径规划问题(Vehicle Routing Problem with Time Windows, VRPTW)是 VRP的重要扩展&#xff0c;其要求配送车辆在客户指定的时间窗内完成服务…

作者头像 李华
网站建设 2025/12/12 2:44:45

Wan2.2-T2V-A14B如何生成带有购物车结算流程的电商导购视频?

Wan2.2-T2V-A14B如何生成带有购物车结算流程的电商导购视频&#xff1f; 在电商平台日益内卷的今天&#xff0c;一张静态主图已经很难留住用户的注意力。越来越多的品牌开始意识到&#xff1a;用户不是不想买&#xff0c;而是没被“演”动心。尤其是在移动端&#xff0c;一段3到…

作者头像 李华
网站建设 2025/12/12 2:44:37

C++_-

set

作者头像 李华
网站建设 2025/12/12 2:42:56

Wan2.2-T2V-A14B在冬季奥运会项目演示中的冰雪质感表现

Wan2.2-T2V-A14B在冬季奥运会项目演示中的冰雪质感表现 当一名单板滑雪运动员从U型池腾空跃起&#xff0c;旋转两周后稳稳落地&#xff0c;雪粉如碎钻般四散飞溅——这样的画面如果出自AI之手&#xff0c;你还能分辨出它与真实拍摄的区别吗&#xff1f;在2026年米兰-科尔蒂纳冬…

作者头像 李华
网站建设 2025/12/12 2:41:30

C++ ⼀级 2025 年09 ⽉

C ⼀级 2025 年09 ⽉ GESP CCF 编程能力等级认证 C 一级&#xff08;2025 年 9 月&#xff09; 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;题号123456789101112131415答案DCCCDADCCACDDAD第 1 题 人工智能现在非常火&#xff0c;小杨就想多了解一下&am…

作者头像 李华