标准的服务端返回Result封装及使用

开发中服务端对外服务需要定义完整的结构,如错误码、错码信息、数据等信息。下面包括普通 ServerResult、分页 ServerPageResult 的封装,开发者可自行根据调整。

服务端 ServerResult 封装

public class ServerResult implements Serializable {
    private T data;
    private boolean success;
    private int code;
    private String message;

    private ServerResult() {}


    private ServerResult(boolean success, int code, String message) {
        this.success = success;
        this.code = code;
        this.message = message;
    }

    private ServerResult(T data, boolean success, int code, String message) {
        this.data = data;
        this.success = success;
        this.code = code;
        this.message = message;
    }

    /**
     * 返回失败,code码和msg自定义
     */
    public static  ServerResult newInstance(){
        return new ServerResult();
    }


    /**
     * 调用默认成功
     */
    public static  ServerResult defaultSuccess(T data){
        return new ServerResult(data, true, 200, "返回成功");
    }

    /**
     * 返回默认失败
     */
    public static  ServerResult defaultFailure(){
        return new ServerResult(false, 500, "系统内部错误");
    }

    /**
     * 自定义失败一
     */
    public static  ServerResult failure(T data, int code, String message){
        return new ServerResult(data, false, code, message);
    }

    /**
     * 自定义失败二
     */
    public static  ServerResult failure(int code, String message){
        return new ServerResult(false, code, message);
    }

    public T getData() {
        return data;
    }

    public ServerResult data(T data) {
        this.data = data;
        return this;
    }

    public boolean isSuccess() {
        return success;
    }

    public ServerResult sucess(boolean success) {
        this.success = success;
        return this;
    }

    public int getCode() {
        return code;
    }


    public ServerResult code(int code) {
        this.code = code;
        return this;
    }

    public String getMessage() {
        return message;
    }

    public ServerResult message(String message) {
        this.message = message;
        return this;
    }

}

服务端 ServerPageResult 封装

public class ServerPageResult extends ServerResult {

    @Getter
    @Setter
    protected int pageNo = 1;

    @Getter @Setter
    protected int pageSize;

    @Getter @Setter
    protected int totalCount;

    protected int totalPage;

    public int getTotalPage() {
        if(this.pageSize> 0 && this.totalCount >0) {
            this.totalPage =  this.totalCount % this.pageSize == 0 ? (this.totalCount / this.pageSize) : ( this.totalCount / this.pageSize + 1 );
        } else {
            this.totalPage = 0;
        }
        return totalPage;
    }

    public ServerPageResult totalCount(int totalCount) {
        setTotalCount(totalCount);
        return this;
    }

    public ServerPageResult pageSize(int pageSize) {
        setPageSize(pageSize);
        return this;
    }

    public ServerPageResult pageNo(int pageNo) {
        setPageNo(pageNo);
        return this;
    }
    
    public static  ServerPageResult defaultFailure(String errorCode, String errorMsg) {
        ServerPageResult result = new ServerPageResult<>();
        result.setSuccess(false);
        result.setMessage(errorMsg);
        result.setCode(errorCode);
        return result;
    }

    public static  ServerPageResult defaultFailure(T data, String errorCode, String errorMsg) {
        ServerPageResult result = new ServerPageResult<>();
        result.setSuccess(false);
        result.setMessage(errorMsg);
        result.setCode(errorCode);
        result.setData(data);
        return result;
    }

    public static  ServerPageResult defaultSuccess(T data, Integer pageNo, Integer pageSize, Integer totalCount){
        ServerPageResult result = new ServerPageResult<>();
        result.setSuccess(true);
        result.setCode("200");
        result.setData(data);
        result.setPageNo(pageNo);
        result.setPageSize(pageSize);
        result.setTotalCount(totalCount);
        return result;
    }
}

测试用例

private ServerResult test() {
        Long data = 1L;
        /**
         * 方式一:创建返回结果实例
         */
        return ServerResult.newInstance().data(data);
        /**
         * 方式二:使用默认的
         */
        return ServerResult.failure(data, 20, "msg");
        /**
         * 方式三
         */
        ServerResult serverResult = ServerResult.newInstance();
        return serverResult.sucess(true).code(200);

         // 分页参数:成功返回分页参数
        ServerPageResult> serverPageResult1 =             ServerPageResult.defaultSuccess(studentList, 1, 20, 100);

        // 分页参数:失败返回分页参数,无数据返回
        ServerPageResult> serverPageResult2 = ServerPageResult.defaultFailure("GET_PAGE_ERROR", "获取分页信息失败");

        // 分页参数:失败返回分页参数,默认数据返回
        ServerPageResult> serverPageResult3 = ServerPageResult.defaultFailure(new ArrayList<>(),"GET_PAGE_ERROR", "获取分页信息失败");
    }

你可能感兴趣的:(标准的服务端返回Result封装及使用)