做游戏网站西安外贸网站搭建

张小明 2025/12/31 20:44:53
做游戏网站,西安外贸网站搭建,公司网站开发招标书,html怎么发布网页视频看了几百小时还迷糊#xff1f;关注我#xff0c;几分钟让你秒懂#xff01;在前两篇中#xff0c;我们分别讲了 全局异常处理 和 参数校验#xff0c;解决了“出错怎么返回”和“非法请求怎么拦截”的问题。但还有一个更基础、却常被忽视的问题#xff1a; 所有接口…视频看了几百小时还迷糊关注我几分钟让你秒懂在前两篇中我们分别讲了全局异常处理和参数校验解决了“出错怎么返回”和“非法请求怎么拦截”的问题。但还有一个更基础、却常被忽视的问题所有接口的返回格式五花八门前端每次都要猜字段含义今天我们就来解决这个痛点——如何设计统一、清晰、可扩展的 RESTful API 响应结构。一、需求场景你正在开发一个电商系统有以下接口获取商品列表 → 返回ListProduct用户登录 → 返回 token下单 → 返回订单号删除商品 → 成功或失败问题来了有的接口直接返回数据有的返回{code:200, data:...}错误时有的返回{error: xxx}有的返回{msg: xxx}前端无法用一套逻辑处理所有响应后果联调效率低、Bug 多、体验差。二、解决方案统一封装响应体CommonResult✅ 正确做法业界标准1. 定义通用返回类// CommonResult.java import lombok.Data; import lombok.NoArgsConstructor; Data NoArgsConstructor public class CommonResultT { private int code; // 状态码200成功400参数错误500服务器错误等 private String message; // 提示信息 private T data; // 业务数据 private long timestamp; // 时间戳可选 // 成功无数据 public static T CommonResultT success() { return new CommonResult(200, 操作成功, null); } // 成功带数据 public static T CommonResultT success(T data) { return new CommonResult(200, 操作成功, data); } // 失败 public static T CommonResultT error(int code, String message) { return new CommonResult(code, message, null); } // 私有构造 private CommonResult(int code, String message, T data) { this.code code; this.message message; this.data data; this.timestamp System.currentTimeMillis(); } } 使用 Lombok 的Data自动生成 getter/setter/toString减少样板代码。2. Controller 统一返回 CommonResultRestController RequestMapping(/api/product) public class ProductController { GetMapping public CommonResultListProduct listProducts() { ListProduct products productService.findAll(); return CommonResult.success(products); } PostMapping public CommonResultString createProduct(Valid RequestBody ProductDTO dto) { String id productService.create(dto); return CommonResult.success(id); } DeleteMapping(/{id}) public CommonResultVoid deleteProduct(PathVariable String id) { productService.deleteById(id); return CommonResult.success(); // 无数据返回 } }3. 与全局异常处理器联动回顾上一篇ExceptionHandler(BusinessException.class) public CommonResultVoid handleBusiness(BusinessException e) { return CommonResult.error(e.getCode(), e.getMessage()); }这样无论成功还是失败前端收到的都是同一套结构三、反例千万别这么写❌ 反例1直接返回实体对象GetMapping(/{id}) public User getUser(PathVariable Long id) { return userService.findById(id); // 直接返回 User 对象 }问题成功时返回{id:1, name:张三}失败时可能返回{timestamp:..., status:500, error:...}Spring Boot 默认错误页前端无法区分是“业务成功”还是“系统异常”。❌ 反例2每个接口自定义返回结构public class LoginResponse { private String token; private boolean success; } public class ProductListResponse { private ListProduct items; private int total; }问题无法复用前端要为每个接口写解析逻辑后期加字段如 traceId、version需全量修改。四、进阶设计支持分页、元信息、泛型嵌套场景列表接口需要返回总数、分页信息方案使用泛型包装器// PageResult.java Data public class PageResultT { private ListT list; private long total; private int pageNum; private int pageSize; } // Controller GetMapping(/page) public CommonResultPageResultProduct pageProducts( RequestParam(defaultValue 1) int pageNum, RequestParam(defaultValue 10) int pageSize) { PageResultProduct page productService.page(pageNum, pageSize); return CommonResult.success(page); }前端收到{ code: 200, message: 操作成功, data: { list: [...], total: 100, pageNum: 1, pageSize: 10 }, timestamp: 1703489832123 }✅ 清晰、可扩展、前后端契约明确五、注意事项面试加分项不要把敏感信息放入 message比如数据库错误堆栈、内部路径等防止信息泄露。code 建议与 HTTP 状态码一致200成功400客户端错误参数、校验401未认证403无权限404资源不存在500服务器内部错误这样即使不看code字段仅看 HTTP 状态也能判断大类。data 为 null 时JSON 中是否保留字段使用 Jackson 配置JsonInclude(JsonInclude.Include.NON_NULL) public class CommonResultT { ... }避免返回data: null更简洁。国际化支持高阶message可通过MessageSource根据用户语言动态返回适合多语言系统。与 Swagger 集成在 Controller 方法上加上Operation(summary 获取商品列表) ApiResponse(responseCode 200, description 成功, content Content(schema Schema(implementation CommonResult.class)))六、总结优势说明✅ 前后端解耦接口契约清晰降低沟通成本✅ 易于调试所有响应结构一致日志/监控好处理✅ 可扩展性强加字段如 traceId、version只需改 CommonResult✅ 提升专业度体现工程规范意识面试官眼前一亮记住好的 API 不只是“能用”而是“好用、易用、稳定用”。视频看了几百小时还迷糊关注我几分钟让你秒懂
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

国内做设计的网站网易企业邮箱价格

1. PandasAI简介 定义:结合Pandas和AI的开源Python库核心功能:使用自然语言进行数据查询和分析支持数据源:CSV、XLSX、PostgreSQL、MySQL、BigQuery、Databricks、Snowflake等 2. 主要特点 自然语言查询:用日常语言提问数据问题数…

张小明 2025/12/31 16:30:29 网站建设

用书籍上的文章做网站更新注册传媒公司流程和费用

第一章:揭秘Open-AutoGLM与UiPath操作复杂度的背景与意义在自动化技术飞速发展的今天,企业对流程自动化的依赖日益加深。Open-AutoGLM 作为一种新兴的开源大语言模型驱动自动化框架,结合 UiPath 这类成熟的机器人流程自动化(RPA&a…

张小明 2025/12/31 17:15:51 网站建设

哪个网站可以接工程做陕西咸阳网站建设

这里写目录标题项目介绍项目展示详细视频演示感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人技术栈文章下方名片联系我即可~解决的思路…

张小明 2025/12/31 17:15:51 网站建设

大型网站建设培训课件wordpress 评论api

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请生成一个完整的Java项目,演示多态的核心特性。要求包含:1. 一个父类Animal,有makeSound()抽象方法;2. 两个子类Dog和Cat分别实现该…

张小明 2025/12/31 17:15:52 网站建设

广州市网站妇产科网站建设

Kotaemon节日营销专题页策划:春节/双十一 在每年的双十一购物节或春节期间,电商平台的客服系统都会面临一场“压力测试”——成千上万的用户同时涌入,咨询促销规则、比价优惠、退换政策。而传统客服机器人往往只能回答预设问题,面…

张小明 2025/12/31 11:49:37 网站建设

卖网站怎样做免费培训班报名官网

LobeChat支持流式输出吗?实测大模型响应延迟表现 在当前AI应用井喷的时代,用户早已不满足于“点击提问、等待十几秒后弹出一整段答案”的交互模式。我们越来越期待AI像人一样边思考边表达——前一句话刚说完,下一句就已经开始浮现。这种“打字…

张小明 2025/12/31 17:15:55 网站建设