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

Java响应实体【R】

R响应实体

  • 响应实体R(Response Entity)具体作用说明?
    • 1、用与数据传输
    • 2、用于状态反馈
    • 3、指令与控制
  • 普通响应实体
  • 优化后的R:高级响应实体类

响应实体R(Response Entity)具体作用说明?

1、用与数据传输

  • 传输请求结果 :当客户端向服务器发送请求后,服务器通过响应实体将请求的处理结果返回给客户端。例如,在一个在线购物系统中,客户端请求查看某个商品的详情,服务器将商品的名称、价格、库存等详细信息封装在响应实体中发送给客户端。
  • 携带资源内容 :对于资源获取类的请求,响应实体可以携带具体的资源内容,如网页的 HTML 代码、图片数据、文件内容等。比如用户请求访问一个网页时,服务器将网页的 HTML 文件作为响应实体返回,客户端浏览器根据该响应实体内容进行页面渲染。

2、用于状态反馈

  • 指示请求处理状态 :响应实体中的状态码可以明确指示请求的处理情况,如成功(2xx)、客户端错误(4xx)、服务器错误(5xx)等。例如,状态码 200 表示请求已成功处理,404 表示请求的资源未找到,500 表示服务器内部错误等。
  • 提供详细状态信息 :除了状态码,响应实体还可以包含更详细的状态描述信息,帮助客户端更好地理解请求的处理结果。比如在返回 401 未授权状态码时,响应实体中可以包含提示信息,如 “未提供有效的身份验证凭据” 等。

3、指令与控制

  • 指导客户端操作 :响应实体可以包含一些指令,指导客户端进行后续的操作。例如,在文件下载请求的响应中,服务器可以指示客户端以特定的方式处理下载的文件,如自动打开、保存到指定目录等。
  • 控制客户端行为 :通过响应实体,服务器可以对客户端的行为进行一定程度的控制,如限制客户端的访问频率、控制客户端对某些资源的访问权限等。

普通响应实体

package com.pojo.vo;import java.io.Serializable;/*** 响应实体类** @author mini* @date 2025.05.06*/
public class R implements Serializable {private static final long serialVersionUID = 1L;private Integer code;private String message;private Object data;public R() {}public R(Integer code, String message, Object data) {this.code = code;this.message = message;this.data = data;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public static R ok() {return new R(200, "成功", null);}public static R ok(Object data) {return new R(200, "成功", data);}public static R ok(String message, Object data) {return new R(200, message, data);}public static R error() {return new R(500, "失败", null);}public static R error(String message) {return new R(500, message, null);}public static R error(Integer code, String message) {return new R(code, message, null);}
}

优化后的R:高级响应实体类

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import org.springframework.context.MessageSource;/*** 高级响应实体类** @author mini* @date 2025.05.06*/
public class R implements Serializable {private static final long serialVersionUID = 1L;/*** 常用状态码*/public static final int CODE_SUCCESS = 200;public static final int CODE_BAD_REQUEST = 400;public static final int CODE_UNAUTHORIZED = 401;public static final int CODE_FORBIDDEN = 403;public static final int CODE_NOT_FOUND = 404;public static final int CODE_INTERNAL_ERROR = 500;private Integer code;private String message;private Object data;private Map<String, String> headers = new HashMap<>();public R() {}public R(Integer code, String message, Object data) {this.code = code;this.message = message;this.data = data;}// Getters and Setterspublic Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public Map<String, String> getHeaders() {return headers;}public void setHeaders(Map<String, String> headers) {this.headers = headers;}// 静态方法创建响应实体public static R ok() {return new R(CODE_SUCCESS, "成功", null);}public static R ok(Object data) {return new R(CODE_SUCCESS, "成功", data);}public static R ok(String messageKey, Object... args) {String message = MessageSource.getMessage(messageKey, args, Locale.getDefault());return new R(CODE_SUCCESS, message, null);}public static R error() {return new R(CODE_INTERNAL_ERROR, "失败", null);}public static R error(String message) {return new R(CODE_INTERNAL_ERROR, message, null);}public static R error(Integer code, String message) {return new R(code, message, null);}public static R resourceNotFound() {return new R(CODE_NOT_FOUND, "资源未找到", null);}public static R forbidden() {return new R(CODE_FORBIDDEN, "禁止访问", null);}public static R badRequest() {return new R(CODE_BAD_REQUEST, "请求错误", null);}public static R unauthorized() {return new R(CODE_UNAUTHORIZED, "未授权", null);}public static R validationError(List<String> errors) {return new R(CODE_BAD_REQUEST, "参数验证失败", errors);}// 链式调用public R code(Integer code) {this.code = code;return this;}public R message(String message) {this.message = message;return this;}public R data(Object data) {this.data = data;return this;}public R header(String name, String value) {headers.put(name, value);return this;}public R put(String key, Object value) {if (this.data == null) {this.data = new HashMap<>();}((Map<String, Object>) this.data).put(key, value);return this;}// 支持分页数据public static R okWithPage(Object content, Long totalElements, Integer totalPages, Integer currentPage) {return new R(CODE_SUCCESS, "成功", content).put("totalElements", totalElements).put("totalPages", totalPages).put("currentPage", currentPage);}// 支持国际化public static R okWithI18n(String messageKey, Object... args) {String message = MessageSource.getMessage(messageKey, args, Locale.getDefault());return new R(CODE_SUCCESS, message, null);}// 支持缓存控制public static R okWithCache(Object data, long cacheTime) {return new R(CODE_SUCCESS, "成功", data).header("Cache-Control", "max-age=" + cacheTime);}// 支持验证错误public static R validationError(List<String> errors) {return new R(CODE_BAD_REQUEST, "参数验证失败", errors);}// 静态内部类,用于模拟 MessageSourceprivate static class MessageSource {public static String getMessage(String messageKey, Object[] args, Locale locale) {ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);return bundle.getString(messageKey);}}
}

相关文章:

  • 如何对外包团队进行有效的管理?
  • Day19 常见的特征筛选算法
  • 代码随想录第39天:单调栈
  • 零拷贝的简单复习
  • Python核心数据结构深度对比:列表、字典、元组与集合的异同与应用场景
  • 深度解析语义分割评估指标:从基础到创新实践
  • DataWorks快速入门
  • 预渲染 Prerender
  • pm2如何执行脚本批量启动多个服务
  • 77.组合问题
  • C++ STL入门:vecto容器
  • nextjs站点地图sitemap添加
  • 算法题(142):木材加工
  • Music AI Sandbox:打开你的创作新世界
  • java使用MinIO,虚拟机时间异常
  • Typora安装使用教程,图片相对储存路径路径设置
  • 滚珠导轨:电子制造领域精密运动的核心支撑
  • 跨线程和跨进程通信还有多种方式对比
  • 大模型(LLMs)agent
  • C++之“继承”
  • 越怕出错越会出错,“墨菲定律”的魔咒该怎么破?
  • 经彩申城!上海网络大V沙龙活动走进闵行
  • 圆桌丨权威专家解读中俄关系:在新形势下共同应对挑战、共创发展机遇
  • 戴维·珀杜宣誓就任美国驻华大使
  • 明天起,沪苏湖高铁、杭温高铁推出13款新型票制产品
  • 国新办将于5月8日10时就《民营经济促进法》有关情况举行新闻发布会