封装返回值对象
描述文本(message):这里设计message是失败时的描述文本,这里的message最终是要返回给客户端的,当失败时,回给客户端一句话,告诉客户端哪个地方出错,用户就可以参照失败信息进行调整。后端之所以要给失败信息,就是担心前端不知道怎么去描述这个错误的点。但是前端可以不用这个错误信息也是ok的,可以根据此信息自己进行组织语言。成功的话就不需要给了,前端通过成功的状态码就可以自己组织语言进行提示用户,例如用户登录,有的网页登录成功就没有提示,直接进行跳转了。
响应数据(data):比如说客户端向服务端发请求,想查看文章列表,就响应给客户端文章列表;想要看一个文章的详情,就响应给客户端这一个文章详情数据。有时候请求列表,有时候请求单个数据,这样就不能确定是哪一个数据类型了,为了保证所有的数据能够相应给客户端,这了的响应数据类型设计为Object类型。操作失败时,服务器端是不会返回给客户端数据的,比如说客户端想要查看一个文章详情,结果查询失败了,这个数据根本就没有,没法给;客户端查一下用户的详情,他没有权限,是不会给数据的。
/**
* 服务器端的统一响应类型
*/
@Data
public class JsonResult {
/**
* 响应的业务状态码值
*/
private Integer state;
/**
* 操作失败时的描述文本
*/
private String message;
/**
* 操作成功时的响应数据
*/
private Object data;
public static JsonResult ok() {
// JsonResult jsonResult = new JsonResult();
// jsonResult.setState(ServiceCode.OK.getValue());
// return jsonResult;
return ok(null);
}
public static JsonResult ok(Object data) {
JsonResult jsonResult = new JsonResult();
jsonResult.setState(ServiceCode.OK.getValue());
jsonResult.setData(data);
return jsonResult;
}
public static JsonResult fail(ServiceException e) {
// JsonResult jsonResult = new JsonResult();
// jsonResult.setState(e.getServiceCode().getValue());
// jsonResult.setMessage(e.getMessage());
// return jsonResult;
return fail(e.getServiceCode(), e.getMessage());
}
public static JsonResult fail(ServiceCode serviceCode, String message) {
JsonResult jsonResult = new JsonResult();
jsonResult.setState(serviceCode.getValue());
jsonResult.setMessage(message);
return jsonResult;
}
}