在我们后端返回给前端的数据中,一个良好的实践是返回格式的统一性,不要一下是String,一下是Object等等,这样会让人感觉很low,并且也不美观。优雅的返回格式应该是类似这样的(json格式):
{
status:"....." //状态码
msg:"......" //描述
data:"....." //返回的数据
}
代码实现 ServerResponse:
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)//如果值为null,那么也不会返回key public class ServerResponse<T> implements Serializable { private int status; private String msg; private T data; private ServerResponse(int status){ this.status=status; } private ServerResponse(int status, T data){ this.status=status; this.data=data; } private ServerResponse(int status, String msg, T data){ this.status=status; this.msg=msg; this.data=data; } private ServerResponse(int status, String msg){ this.status=status; this.msg=msg; } @JsonIgnore //使之不在json序列化结果中 public boolean isSuccess(){ return this.status==ResponseCode.SUCCESS.getCode(); } public int getStatus(){ return status; } public T getData(){ return data; } public String getMsg() { return msg; } public static <T> ServerResponse<T> createBySuccess(){ return new ServerResponse<>(ResponseCode.SUCCESS.getCode()); } public static <T> ServerResponse<T> createBySuccessMessage(String msg){ return new ServerResponse<>(ResponseCode.SUCCESS.getCode(),msg); } public static <T> ServerResponse<T> createBySuccess(T data){ return new ServerResponse<>(ResponseCode.SUCCESS.getCode(),data); } public static <T> ServerResponse<T> createBySuccessMessage(String msg,T data){ return new ServerResponse<>(ResponseCode.SUCCESS.getCode(),msg,data); } public static <T> ServerResponse<T> createByError(){ return new ServerResponse<>(ResponseCode.ERROR.getCode(),ResponseCode.ERROR.getDesc()); } public static <T> ServerResponse<T> createByErrorMessage(String errorMsg){ return new ServerResponse<>(ResponseCode.ERROR.getCode(),errorMsg); } public static <T> ServerResponse<T> createByErrorCodeMessage(int code,String errorMsg){ return new ServerResponse<>(code,errorMsg); } }
ResponseCode :
public enum ResponseCode { //枚举类 SUCCESS(0,"SUCCESS"), //各个不同的响应实例 ERROR(1,"ERROR"), NEED_LOGIN(10,"NEED_LOGIN"), ILLEGAL_ARGUMENT(2,"ILLEGAL_ARGUMENT"); private final int code; private final String desc; ResponseCode(int code, String desc) { this.code = code; this.desc = desc; } public int getCode(){ return code; } public String getDesc(){ return desc; } }