在实际开发中,项目都是前后端分离项目 json 数据格式交互;需要定义统一的返回格式;
在处理业务,需要定义不同的业务错误码用来区分程序错误,统一方便管理和排查 bug 定位;
@Data // lombokpublic class R<T> implements Serializable { private static final long serialVersionUID = 6738387175874422264L; private Integer code; private String message; private T data; private R() { } public static <T> R<T> ok() { return createResult(ResponseCode.SUCCESS.getCode(), null, null); } public static <T> R<T> ok(T data) { return createResult(ResponseCode.SUCCESS.getCode(), ResponseCode.SUCCESS.getMessage(), data); } public static <T> R<T> ok(String message) { return createResult(ResponseCode.SUCCESS.getCode(), message, null); } public static <T> R<T> ok(T data, String message) { return createResult(ResponseCode.SUCCESS.getCode(), message, data); } public static <T> R<T> fail() { return createResult(ResponseCode.FAIL.getCode(), ResponseCode.FAIL.getMessage(), null); } public static <T> R<T> fail(ResponseCode responseCode) { return createResult(responseCode.getCode(), responseCode.getMessage(), null); } public static <T> R<T> fail(ResponseCode responseCode, T data) { return createResult(responseCode.getCode(), responseCode.getMessage(), data); } public static <T> R<T> fail(ResponseCode responseCode, String message) { return createResult(responseCode.getCode(), String.format("%s %s", responseCode.getMessage(), message), null); } public static <T> R<T> fail(Integer code, String message) { return createResult(code, message, null); } private static <T> R<T> createResult(Integer code, String message, T data) { R<T> r = new R<>(); r.setCode(code); r.setMessage(message); r.setData(data); return r; }}
public interface IResponseCode { /** * code * * @return code */ Integer getCode(); /** * message desc * * @return message */ String getMessage();}
@Getter@AllArgsConstructorpublic enum ResponseCode implements IResponseCode { /** * 成功 */ SUCCESS(200, "请求成功"), /** * 失败 */ FAIL(400, "请求失败"), /** * 用户信息不存在 */ USER_NOT_FOUND(10001, "用户信息不存在"), ; /** * code */ final Integer code; /** * message desc */ final String message;}
返回前端的格式,一目了然
成功
{ "code": 200, "message": "请求成功", "data": [ // .... ]}
失败
{ "code": 400, "message": "请求失败", "data": null}{ "code": 10001, "message": "用户信息不存在", "data": null}
历史文章
Python Scrapy (Plus) Double Happy ~
Python Scrapy 体会一下, 爬虫的快乐~
MySql 进阶
MySql 初识
Docker 常用操作