统一请求的响应结果
在企业级项目开发中,通常都会需要构建一个统一请求的响应结果类,来统一处理请求的响应结果。
定义统一请求的响应结果类
首先要明确的是:
1.请求的响应结果中必须携带的属性有哪些?
2.请求的响应结果中选择性携带的属性又有哪些?
//1.请求的响应结果中必须携带的属性
private boolean status; //操作状态,成功?失败?
private int code; //结果返回码,表示操作的具体情况,什么模块的请求(用户模块操作?企业模块操作?权限模块操作?)? 操作成功? 操作失败(失败类型是什么?没有权限?没有登录?服务器抛出异常?等等)?
private String message; //响应结果的描述性信息
//2.请求的响应结果中选择器携带的属性
private Object data; //返回的数据
构建统一请求的响应结果类
因为响应结果的类型实在太多了,在构建统一请求的响应结果类之前,我们先定义一个ResultCode帮助统一请求的响应结果类来收集各种响应结果的类型。
ResultCode
ResultCode:结果返回码对象
其中ResultCode包含通用模块的操作返回码、其他模块的操作返回码,比如用户模块的操作返回码、企业模块的操作返回码等等。
package com.ihrm.common.entity;
//结果返回码类
public enum ResultCode {
//--模块通用的操作结果返回码--
SUCCESS(true, 10000, "操作成功"),//通用的操作成功
SERVER_ERROR(false, 99999, "抱歉,系统繁忙,请稍后重试"),//通用的操作失败,服务器抛出异常
FAIL(false, 10001, "操作失败"),//通用的操作失败
UNAUTHENTICATED(false,10002,"您还未登录"),//通用的操作失败,未登录
UNAUTHORISE(false,10003,"权限不足"); //通用的操作失败,权限不够
/**
* 其他模块的操作结果返回码
*/
//---用户操作返回码 2xxxx---- 用户操作成功?用户操作失败?
//---企业操作返回码 3xxxx----
//---权限操作返回码----
//---其他操作返回码----
private boolean status;
private int code;
private String message;
ResultCode(boolean status, int code, String message) {
this.status = status;
this.code = code;
this.message = message;
}
public boolean status() {
return status;
}
public int code() {
return code;
}
public String message() {
return message;
}
}
Result
Result是统一请求的响应结果类。
package com.ihrm.common.entity;
//统一请求的响应结果类
public class Result {
private boolean status; //请求状态
private int code; //响应状态码
private String message; //返回响应的描述性信息
private Object data; //返回数据
public Result(ResultCode resultCode) {
this.status = resultCode.status();
this.code = resultCode.code();
this.message = resultCode.message();
}
public Result(ResultCode resultCode, Object data) {
this.status = resultCode.status();
this.code = resultCode.code();
this.message = resultCode.message();
this.data = data;
}
/**
模块通用的操作返回方法
*/
public Result success() {
return new Result(ResultCode.SUCCESS);
}
public Result success(Object data) {
return new Result(ResultCode.SUCCESS, data);
}
public Result serverError() {
return new Result(ResultCode.SERVER_ERROR);
}
public Result fail() {
return new Result(ResultCode.FAIL);
}
public Result unauthenticated() {
return new Result(ResultCode.UNAUTHENTICATED);
}
public Result unauthorise() {
return new Result(ResultCode.UNAUTHORISE);
}
/**
* 其他模块的操作返回方法
*/
}