欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 后台框架-统一数据格式

后台框架-统一数据格式

2025/4/4 6:25:26 来源:https://blog.csdn.net/Angushine/article/details/141729828  浏览:    关键词:后台框架-统一数据格式

现在BS架构的应用一般都采用前后端分离的架构,前端技术框架可采用VUE等,后端框架目前成熟且使用广泛的就是基于SpringBoot开发的后端微服务框架。

数据格式

这里主要介绍一下如何实现返回统一的数据格式,比如返回的样例数据如下图所示:
在这里插入图片描述

项目结构

新建一个SpringBoot项目如下,目录结构以及相关文件如下所示:
在这里插入图片描述
先定义返回的数据实体,需要两个类:

ResultEnum

package org.example.web.model;import lombok.AllArgsConstructor;
import lombok.Getter;@AllArgsConstructor
@Getter
public enum ResultEnum {SUCCESS(200, "操作成功"),FAIL(300,"获取数据失败"),USER_NOT_FOUND(301,"用户不存在,请重新登录"),ERROR(302,"错误请求"),USERNAME_PASSWORD_ERROR(303,"用户名或密码错误"),INVALID_TOKEN(400,"无效Token,请重新登录"),TOKEN_VERIFY_ERROR(401,"Token验证失败,请重新登录"),TOKEN_EXPIRE(402,"token已过期");private final Integer code;private final String msg;public static ResultEnum getResult(Integer code){for (ResultEnum value : ResultEnum.values()) {if (code.equals(value.getCode())){return value;}}return ResultEnum.ERROR;}
}

前后端交互实体R

package org.example.web.model;import lombok.Data;import java.io.Serializable;@Data
public class R<T> implements Serializable {private static final long serialVersionUID = 56665257244236049L;private Integer code;private String message;private T data;private R() {}public static <T> R<T> ok(T data) {R<T> response = new R<>();response.setCode(ResultEnum.SUCCESS.getCode());response.setMessage(ResultEnum.SUCCESS.getMsg());response.setData(data);return response;}public static <T> R<T> error(Integer errCode, String errMessage) {R<T> response = new R<>();response.setCode(errCode);response.setMessage(errMessage);return response;}public static <T> R<T> error(ResultEnum responseEnum) {R<T> response = new R<>();response.setCode(responseEnum.getCode());response.setMessage(responseEnum.getMsg());return response;}
}

实体类User

package org.example.web.model;import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Builder;
import lombok.Data;import java.util.Date;@Data
@Builder
public class User {private String id;private String username;@JsonIgnoreprivate String password;private String name;private Integer age;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date createTime;
}

为了便于属性赋值,这里采用lombok的链式赋值,使用@Builder注解,用法如下:

// 实例化一个对象
User user = User.builder().id("1").username("test").name("张三").age(20).createTime(new Date()).build();

当实体的某些属性需要格式化时,比如时间,可使用@JsonFormat,参数说明如下:
pattern:时区
timezone:时区
@JsonFormat 默认是标准时区的时间,中国地区会少8小时,因此使用时,按需求加上时区,北京时间为东八区,timezone=“GMT+8”

接口IndexController

package org.example.web.controller;import org.example.web.model.R;
import org.example.web.model.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Date;@RestController
public class IndexController {// http://127.0.0.1:8080/user@RequestMapping("/user")public R<User> user() {User user = User.builder().id("1").username("test").name("张三").age(20).createTime(new Date()).build();return R.ok(user);}}

运行

运行后,访问http://localhost:8080/user
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词