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


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

服务端 ServerResult 封装

public class ServerResult<T> 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 <T> ServerResult<T> newInstance(){
        return new ServerResult<T>();
    }


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

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

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

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

    public T getData() {
        return data;
    }

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

    public boolean isSuccess() {
        return success;
    }

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

    public int getCode() {
        return code;
    }


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

    public String getMessage() {
        return message;
    }

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

}

服务端 ServerPageResult 封装

public class ServerPageResult<T> extends ServerResult<T> {

    @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<T> totalCount(int totalCount) {
        setTotalCount(totalCount);
        return this;
    }

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

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

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

    public static <T> ServerPageResult<T> defaultSuccess(T data, Integer pageNo, Integer pageSize, Integer totalCount){
        ServerPageResult<T> 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<Long> test() {
        Long data = 1L;
        /**
         * 方式一:创建返回结果实例
         */
        return ServerResult.<Long>newInstance().data(data);
        /**
         * 方式二:使用默认的
         */
        return ServerResult.<Long>failure(data, 20, "msg");
        /**
         * 方式三
         */
        ServerResult<Long> serverResult = ServerResult.newInstance();
        return serverResult.sucess(true).code(200);

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

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

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

如转载,请注明出处!欢迎关v信公众号:方辰的博客

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bboyzqh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值