Java后端请求响应封装

1、前端发送ajax请求,后端需要返回什么?

在前端发送 AJAX 请求后,后端的返回内容需要满足前端能正确解析、处理请求结果的核心需求,通常包含以下关键要素:

1. 数据格式:JSON 为主(主流选择)

后端返回的数据格式需与前端约定一致,JSON(JavaScript Object Notation) 是最常用的格式,原因是:

  • 轻量、易读,前后端都能高效解析(前端可直接用JSON.parse()处理);
  • 支持复杂结构(对象、数组、嵌套数据等),能满足大部分业务场景;
  • 兼容性好,所有主流编程语言和框架都支持 JSON 的序列化 / 反序列化。

少数场景下可能返回其他格式(如 XML、纯文本、二进制流等),但需前端提前约定解析方式。

2. 核心响应字段(建议统一结构)

为了让前端能统一处理请求结果(成功 / 失败、数据提取等),后端返回的 JSON 通常包含以下核心字段(字段名可自定义,保持前后端一致即可):

字段名作用说明
code状态码(自定义业务码),用于标识请求结果(如:200 = 成功,400 = 参数错误,500 = 服务器异常)
message提示信息,用于前端展示(如:“操作成功”、“用户名已存在”)
data实际业务数据(成功时返回有效数据,失败时可返回 null 或错误详情)
(可选)timestamp时间戳,用于标识响应生成时间(便于调试或日志追踪)

示例:一个标准的 JSON 响应

{
  "code": 200,
  "message": "查询成功",
  "data": {
    "id": 1,
    "name": "示例数据",
    "list": [1, 2, 3]
  },
  "timestamp": 1628888888888
}

2、Java后端请求响应封装

创建工具类Result,统一响应格式:

package com.zff.ddlf.common;

/**
 * 全局统一返回结果类
 *
 */
public class Result<T> {
    // 返回码
    private Integer code;
    // 返回消息
    private String message;
    // 返回数据
    private T data;
    public Result(){}
    // 返回数据
    protected static <T> Result<T> build(T data) {
        Result<T> result = new Result<T>();
        if (data != null)
            result.setData(data);
        return result;
    }
    public static <T> Result<T> build(T body, Integer code, String message) {
        Result<T> result = build(body);
        result.setCode(code);
        result.setMessage(message);
        return result;
    }
    public static <T> Result<T> build(T body, ResultCodeEnum resultCodeEnum) {
        Result<T> result = build(body);
        result.setCode(resultCodeEnum.getCode());
        result.setMessage(resultCodeEnum.getMessage());
        return result;
    }
    /**
     * 操作成功
     * @param data  baseCategory1List
     * @param <T>
     * @return
     */
    public static<T> Result<T> ok(T data){
        Result<T> result = build(data);
        return build(data, ResultCodeEnum.SUCCESS);
    }
    public Result<T> message(String msg){
        this.setMessage(msg);
        return this;
    }
    public Result<T> code(Integer code){
        this.setCode(code);
        return this;
    }
    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 T getData() {
        return data;
    }
    public void setData(T data) {
        this.data = data;
    }
}

创建枚举类管理状态码:

package com.zff.ddlf.common;
/**
 * 统一返回结果状态信息类
 *
 */
public enum ResultCodeEnum {

    SUCCESS(200,"success"),
    USERNAME_ERROR(501,"usernameError"),
    PASSWORD_ERROR(503,"passwordError"),
    NOTLOGIN(504,"notLogin"),
    USERNAME_USED(505,"userNameUsed")
    ;

    private Integer code;
    private String message;
    private ResultCodeEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
    public Integer getCode() {
        return code;
    }
    public String getMessage() {
        return message;
    }
}

设计优势
标准化:统一接口返回格式,减少前后端沟通成本
便捷性:通过静态方法快速创建响应对象,简化代码
可维护性:通过ResultCodeEnum枚举管理状态码,避免硬编码,便于统一修改
灵活性:支持泛型数据(T data),可适配任意业务数据类型

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值