JAVA快餐 7 spring boot 接口返回值封装

作者: gavin 分类: Java,Java 快餐 发布时间: 2020-11-02 10:51

概述

rest接口会返回各种各样的数据,如果对接口的格式不加约束,很容易造成混乱。

在实际项目中,一般会把结果放在一个封装类中,封装类中包含http状态值,状态消息,以及实际的数据。

本篇实现一个结果的封装类。

封装类代码

Result.java(如果没有安装lombok插件,需要手动生成getter和setter)

package com.qikegu.demo.common.util;

import lombok.Data;

import javax.annotation.sql.DataSourceDefinition;
import java.io.Serializable;



/**
 * 返回结果基础类型
 *
 * @author zhangweijie
 *
 * @param <T>
 */
@Data
public class Result<T> implements Serializable {

    private static final long serialVersionUID = 2102865241133691258L;
    private static final int SUCCESS_CODE = 0;
    /**
     * 封装数据结果
     */
    private T data;
    /**
     * 接口返回错误码
     */
    private int code;

    /**
     * 接口是否异常
     */
    private boolean success = false;

    /**
     * 接口调用错误信息
     */
    private String message;

    /**
     * 是否调用成功
     */
    public boolean isSuccess() {
        return success;
    }

    /**
     * 成功结果
     *
     * @author zhangweijie
     * @return
     */
    public static <T> Result<T> buildSuccessResult() {
        Result<T> result = new Result<>();
        result.code = SUCCESS_CODE;
        result.success = true;
        return result;
    }

    /**
     * 成功结果
     *
     * @author zhangweijie
     * @param t
     * @return
     */
    public static <T> Result<T> buildSuccessResult(T t) {
        Result<T> result = new Result<>();
        result.code = SUCCESS_CODE;
        result.success = true;
        result.setData(t);
        return result;
    }

    /**
     * 失败结果
     *
     * @author zhangweijie
     * @param code 响应编码
     * @return
     */
    public static <T> Result<T> buildFailureResult(int code) {
        Result<T> result = new Result<>();
        result.code = code;
        result.success = false;
        return result;
    }

    /**
     * 失败结果
     *
     * @author zhangweijie
     * @param msg  响应消息
     * @param code 响应编码
     * @return
     */
    public static <T> Result<T> buildFailureResult(int code, String msg) {
        Result<T> result = new Result<>();
        result.code = code;
        result.message = msg;
        result.success = false;
        return result;
    }

}

复制

解释

代码应该很好懂,主要是3个成员:

  • code – 状态值,应该对应于http的状态值(200,404等等)
  • messsage – 状态消息,如“页面未找到”
  • success – 状态,服务端请求会用到
  • data – 泛型数据,通常是一个hashmap,可放入键值对

添加代码

项目增加文件如下图

image

Result.java文件已经在上面说明过。

控制

控制类return调用成功或失败的封装方法:

    @GetMapping ("/key")
    public Result key(String dateStart,String dateEnd){
        if(dateStart==null){
            return Result.buildFailureResult(400,"StartTime不能为空");
        }else {
            return Result.buildSuccessResult(h5ViewsService.selectKey(dateStart, dateEnd));
        }
    }

复制

解释

请求失败:Result.buildFailureResult();

请求成功:Result.buildSuccessResult();

运行

成功的结果

{
  "data": [
    {
      "id": 2,
      "count": 2,
      "date": "2020-10-30T03:07:58.000+00:00"
    }
  ],
  "code": 0,
  "success": true,
  "message": null
}

请求失败的结果

{
  "data": null,
  "code": 400,
  "success": false,
  "message": "StartTime不能为空"
}

教程原文章:https://www.qikegu.com/docs/2563

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注