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

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

文章目录

  • ✨ 一、接口的统一返回值是什么?
  • ✨ 二、为什么要统一返回值?
  • ✨ 三、怎么做?(带代码实现)
      • 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());}}
http://www.cnnetsun.cn/news/10684.html

相关文章:

  • 入门友好的低代码平台推荐,其中一款完全免费又能私有化部署
  • 基于VUE的小剧场票务系统[VUE]-计算机毕业设计源码+LW文档
  • AI不再“失忆“!揭秘让大模型记住一切的神奇技术,代码详解+实战教程,小白也能变大神!
  • Wan2.2-T2V-A14B模型API接口设计与调用示例详解
  • 如何快速实现Unity游戏翻译:XUnity.AutoTranslator终极指南
  • 阿里Qwen3双模型震撼开源:嵌入式与重排序技术革新RAG应用生态
  • HNU分布式数据库华为云数据库TaurusDB实践
  • 阿里Qwen3-Next模型震撼登场:800亿参数“轻装上阵“,香港企业AI应用成本大降90%
  • 备考华为HCIE的秘诀!轻松拿下顶级认证
  • 协同过滤扶贫助农系统系统
  • 现代 AI 代理设计:17 种架构的系统化实战合集
  • B站视频下载利器DownKyi:专业用户的终极操作指南
  • XUnity.AutoTranslator游戏翻译工具:新手完整使用指南
  • Wan2.2-T2V-A14B生成角色动作自然流畅的关键机制分析
  • 【2025最新】小白如何自学网络安全,零基础入门到精通,看这一篇就够了!
  • 终极指南:如何用Universal x86 Tuning Utility释放Intel CPU电压调节潜力
  • 腾讯实验室发布智能机器人导航突破:让AI像人类一样理解空间
  • 合并两个有序链表:双指针迭代法实现(C++)
  • CVPR 2025最佳论文突破:DepthCrafter实现开放世界视频深度序列生成新范式
  • MEET 2026 | 荣获双奖,AI 开源点亮智能未来
  • Wan2.2-T2V-A14B支持自动字幕嵌入吗?多语种翻译生成测试
  • Wan2.2-T2V-A14B与Sora的技术路线差异比较
  • Java两种代理模式详解
  • MySQL基础篇——约束和事务
  • 【VSCode量子编程环境搭建指南】:手把手教你5步配置Qiskit开发环境
  • Flutter深度解析:从原理到实战的全栈开发指南
  • AI开眼了!多模态大模型架构全解析,从LLaVA到Qwen3-VL,小白也能秒懂的硬核指南
  • 4.10.1计算器含负数8086 ,基于8086的简易计算器可以显示负数,减法计算时可以得出负数显示,但是小于-9以后就显示E0溢出提示
  • Wan2.2-T2V-A14B能否生成适用于VR心理暴露疗法的创伤情境
  • 数据结构-栈(核心代码)