之前做了一下瑞吉外卖,还没做完,就跑去看了一会spring cloud,最近研究一下分布式。
看到一些,突然发现有讲到一些类似的东西。之前笔记也没有记下来。
已经忘记了,老了就是得多写。哈哈~
统一数据返回
如果不统一数据返回可能在数据传输的时候产生BUG容易出错,统一数据返回的话,有一定程度降低出错概率。(其实这个这么说感觉也是有一些牵强吧)
我个人的感觉是,统一数据返回格式的好处是,封装了是否出错,以及出错信息,前端会比较容易判断一些。DEBUG也比较好DE一些。至于出错我感觉其实都是得商量一下接口返回信息之类的。
贴一下当时瑞吉外卖那边统一接口返回,感觉还挺好用的。当时主要用了R这个类。
主要用的东西是:
- 内部封装一个是否成功字段,跟前端约定一下什么表示成功什么表示失败
- message字段,比如失败了,为什么失败,简单写一下原因,好debug
- 传输的数据内容封装进去
- 编写一下静态类后端代码好写
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/**
* 通用返回结果类
* @param <T>
*/
@Data
public class R<T> {
private Integer code; //编码:1成功,0和其它数字为失败
private String msg; //错误信息
private T data; //数据
private Map map = new HashMap(); //动态数据
public static <T> R<T> success(T object) {
R<T> r = new R<T>();
r.data = object;
r.code = 1; // 1表示成功
return r;
}
public static <T> R<T> error(String msg) {
R r = new R();
r.msg = msg;
r.code = 0; // 0表示失败
return r;
}
public R<T> add(String key, Object value) {
this.map.put(key, value);
return this;
}
}
时间格式转换
由于Java提取出来的时间格式是跟平常用的时间格式是不太一样的,直接返回给前端可能有问题。所以一般直接丢给服务端在取出来的时候就给他改掉。
这里的话有好几种实现方式。
当时瑞吉外卖的时间转换写在这个博客了
https://blog.csdn.net/qq_49400568/article/details/136607018
主要就是:
- 编写一下Jackson转换类
- 去注册表里面注册一下方法
应该是在给前端序列化的时候,使用了一下AOP,针对了LocalDate转换了一下。
第二种方法,麻烦一些,在所有需要调整时间格式的上面添加
@JsonFormat(pattern=“yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”)