前后端分离:高复用服务响应对象设计
2021/10/3 6:13:47
本文主要是介绍前后端分离:高复用服务响应对象设计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 什么是高复用服务响应对象?有什么作用?
为了实现前后端分离,设计了一个所有接口都使用,封装后台业务数据放回json数据给前端的对象,用于实现前后端的分离,提升开发效率。
2. 怎么使用?
①首先,要明确,这个对象要实现序列化接口。
它主要封装了三个属性,泛型的返回数据,字符串类型的提示信息以及整型的状态码,以及四个私有的构造函数。
需要注意的是,当T 的类型也就是数据类型是String类型时,好像会和下面的String msg重合,到底会调用哪一个呢?
答案是,当T为String时,的确会调用第二个,这样会产生一个问题,就是当返回的数据就是String,如果这样就会用到msg的那个构造函数,传到信息那边去了。
解决方法在后面,所以具体如下:
保证在序列化json时,如果为空的值,key也会消失,比如只要返回状态码时,msg和data就会忽略不返回
1 //保证序列化json的时候,如果是null的对象,key也会消失 2 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) 3 public class ServerResponse<T> implements Serializable { 4 5 private int status; 6 private String msg; 7 private T data; 8 9 private ServerResponse(int status){ 10 this.status = status; 11 } 12 private ServerResponse(int status,T data){ 13 this.status = status; 14 this.data = data; 15 } 16 17 private ServerResponse(int status,String msg,T data){ 18 this.status = status; 19 this.msg = msg; 20 this.data = data; 21 } 22 23 private ServerResponse(int status,String msg){ 24 this.status = status; 25 this.msg = msg; 26 }
②成员变量的get方法,以及一个判断状态码或者说判断响应是否成功的方法,具体如下:
1 @JsonIgnore 2 //使之不在json序列化结果当中 3 public boolean isSuccess(){ 4 return this.status == ResponseCode.SUCCESS.getCode(); 5 } 6 7 public int getStatus(){ 8 return status; 9 } 10 11 public T getData(){ 12 return data; 13 } 14 15 public String getMsg(){ 16 return msg; 17 }
③提供对外访问的七个构造方法,成功的有四个,失败的三个,具体如下:
1 public static <T> ServerResponse<T> createBySuccess(){ 2 return new ServerResponse<T>(ResponseCode.SUCCESS.getCode()); 3 } 4 5 public static <T> ServerResponse<T> createBySuccessMessage(String msg){ 6 return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg); 7 } 8 9 public static <T> ServerResponse<T> createBySuccess(T data){ 10 return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),data); 11 } 12 13 //这个方法就解决了msg和String类型的数据冲突的问题 14 public static <T> ServerResponse<T> createBySuccess(String msg,T data){ 15 return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg,data); 16 } 17 18 public static <T> ServerResponse<T> createByError(){ 19 return new ServerResponse<T>(ResponseCode.ERROR.getCode(),ResponseCode.ERROR.getDesc()); 20 } 21 22 23 public static <T> ServerResponse<T> createByErrorMessage(String errorMessage){ 24 return new ServerResponse<T>(ResponseCode.ERROR.getCode(),errorMessage); 25 } 26 27 public static <T> ServerResponse<T> createByErrorCodeMessage(int errorCode,String errorMessage){ 28 return new ServerResponse<T>(errorCode,errorMessage); 29 }
3. 总结
这次的高复用服务响应对象的设计与使用涉及到泛型类,后端的数据的处理模式,枚举类的使用,以及前后端数据交互等知识,在后期使用postman进行接口功能测试时更加直观地看到了这个对象的作用。
文章来源:https://www.cnblogs.com/JimmyFanHome/p/9904557.html
这篇关于前后端分离:高复用服务响应对象设计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27数据结构与算法面试题详解及练习
- 2024-12-27网络请求面试题详解与实战
- 2024-12-27数据结构和算法面试真题详解与实战教程
- 2024-12-27网络请求面试真题解析与实战教程
- 2024-12-27数据结构和算法大厂面试真题详解与实战指南
- 2024-12-27TS大厂面试真题解析与应对策略
- 2024-12-27TS大厂面试真题详解与解析
- 2024-12-27网站安全入门:如何识别和修复漏洞
- 2024-12-27SQL注入基础教程
- 2024-12-27初学者指南:理解和修复跨域漏洞