本文主要是介绍后台框架-统一数据格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
现在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
这篇关于后台框架-统一数据格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!