>  기사  >  Java  >  SpringBoot가 통합 캡슐화를 구현하고 프런트엔드 결과 세트를 반환하는 방법

SpringBoot가 통합 캡슐화를 구현하고 프런트엔드 결과 세트를 반환하는 방법

王林
王林앞으로
2023-05-12 17:25:061885검색

이 결과를 어떻게 요약하나요? 우리는 프런트 엔드에 반환되는 데이터에 포함된 정보에 주의를 기울여야 합니다.

일반적으로 말하자면, 우선 이번에는 인터페이스의 상태를 나타내는 코드가 있어야 합니다. 예를 들어, 0은 성공을 의미하고, 1은 실패를 의미하고, 2는 잘못된 매개변수가 전달되어야 함을 의미하고, 4는 시스템 예외를 의미합니다. 이것은 단지 간단한 예일 뿐입니다. 많은 사람들이 질문을 가질 수 있습니다. HTTP 프로토콜 자체에는 이미 해당 반환 코드 정의가 있습니다. 예를 들어 200은 성공을 의미하고, 500은 서버 오류를 의미하며, 404는 페이지를 찾을 수 없음을 의미합니다.

예를 들어 200은 요청이 성공했음을 의미하지만 요청의 비즈니스 결과를 설명할 수는 없습니다. 예를 들어 사용자 이름이 이미 존재하고 실제로 비즈니스가 성공하지 못했지만 HTTP 결과는 확실히 200이므로 비즈니스 상태를 설명하는 코드가 필요합니다.

코드 외에도 성공적인 작업, 시스템 예외, 사용자 이름이 이미 존재함 등과 같은 몇 가지 프롬프트 메시지도 있으므로 메시지 필드를 추가했습니다.

이 외에도 우리의 핵심 데이터가 있습니다. 예를 들어 ID를 기준으로 데이터를 가져오고 있습니다. 이 데이터의 구체적인 내용을 프런트 엔드에 반환해야 하므로 데이터가 있어야 합니다. 이 데이터에는 어떤 유형이 사용됩니까? 이 유형은 다양해야 하므로 객체가 모든 유형을 수신할 수 있도록 통합된 상위 클래스를 사용해야 합니다. 물론, 작업을 용이하게 하기 위해 몇 가지 일반적인 방법을 사용할 수 있습니다.

그리고 우리의 핵심 데이터가 있습니다. 예를 들어 ID를 기준으로 데이터를 얻습니다. 이 데이터의 구체적인 내용을 프런트 엔드에 반환해야 하므로 데이터가 있어야 합니다. 이 데이터에는 어떤 유형이 사용됩니까? 이 유형은 다양해야 하므로 객체가 모든 유형을 수신할 수 있도록 통합된 상위 클래스를 사용해야 합니다. 물론 작업을 용이하게 하기 위해 일반적인 방법을 사용할 수도 있습니다.

기본 코드 표시:

public class Result<T> implements Serializable {
   private static final long serialVersionUID = -3960261604608758516L;
  private int code;
  private String msg;
  private T data;
  public static <T> Result<T> success() {
        return new Result<>();
    }
 
    /**
     * 成功,默认状态码,返回消息,自定义返回数据
     * @param data 自定义返回数据
     * @param <T>  返回类泛型,不能为String
     * @return 通用返回Result
     */
    public static <T> Result<T> success(T data) {
        return new Result<>(data);
    }
 
     /**
     * 成功,默认状态码,自定义返回消息,返回数据
     * @param msg  自定义返回消息
     * @param data 自定义返回数据
     * @param <T>  返回类泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> success(String msg, T data) {
        return new Result<>(msg, data);
    }
           /**
     * 成功,默认状态码,自定义返回消息,无返回数据
     *
     * @param msg 自定义返回消息
     * @param <T> 返回类泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> success(String msg) {
        return new Result<>(msg);
    }
     /**
     * 失败,默认状态码,返回消息,无返回数据
     * @param <T> 返回类泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> error() {
        return new Result<>(ResultCode.ERROR);
    }
     /**
     * 失败,默认状态码,自定义返回消息,无返回数据
     * @param <T> 返回类泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> error(String msg) {
        return new Result<>(ResultCode.ERROR.getCode(), msg);
    }
     /**
     * 失败,自定义状态码,返回消息,无返回数据
     * @param code 自定义状态码
     * @param msg  自定义返回消息
     * @param <T>  返回类泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> error(int code, String msg) {
        return new Result<>(code, msg);
    }
     /**
     * 失败,使用CodeMsg状态码,返回消息,无返回数据
      * @param resultCode CodeMsg,参数如下:
     *                   <p> code 状态码
     *                   <p> msg  返回消息
     * @param <T>        返回类泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> error(ResultCode resultCode) {
        return new Result<>(resultCode);
    }
     /**
     * 成功构造器,无返回数据
     */
    private Result() {
        this(ResultCode.SUCCESS);
    }
     /**
     * 成功构造器,自定义返回数据
     * @param data 返回数据
     */
    private Result(T data) {
        this(ResultCode.SUCCESS, data);
    }
     /**
     * 成功构造器,自定义返回消息,无返回数据
     * @param msg 返回消息
     */
    private Result(String msg) {
        this(ResultCode.SUCCESS.getCode(), msg);
    }
           /**
     * 构造器,自定义状态码,返回消息
     * @param code 状态码
     * @param msg  返回消息
     */
    private Result(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
     /**
     * 成功构造器,自定义返回信息,返回数据
     * @param msg  返回信息
     * @param data 返回数据
     */
    private Result(String msg, T data) {
        this(ResultCode.SUCCESS.getCode(), msg, data);
    }
 
    /**
     * 构造器,自定义状态码,返回消息,返回数据
     * @param code 状态码
     * @param msg  返回消息
     * @param data 返回数据
     */
    private Result(int code, String msg, T data) {
        this(code, msg);
        this.data = data;
    }
            /**
     * 构造器,使用CodeMsg状态码与返回信息,自定义返回数据
     * @param resultCode CodeMsg,参数如下:
     *                   <p> code 状态码
     *                   <p> msg  返回消息
     * @param data       返回数据
     */
    private Result(ResultCode resultCode, T data) {
        this(resultCode);
        this.data = data;
    }
  
    /**
     * 构造器,使用CodeMsg状态码与返回信息
     * @param resultCode CodeMsg,参数如下:
     *                   <p> code 状态码
     *                   <p> msg  返回消息
     */
    private Result(ResultCode resultCode) {
        this(resultCode.getCode(), resultCode.getMsg());
    }
 
}

정의해야 할 몇 가지 일반적인 오류도 있습니다

@Builder
public class ResultCode implements Serializable {
     private static final long serialVersionUID = -6269841958947880397L;
     /** 状态码*/
    private int code;
     /**状态信息*/
    private String msg;
     /** 默认成功*/
    public final static ResultCode SUCCESS = dispose(ResultCodeEnum.SUCCESS);
    /**默认失败*/
   public final static ResultCode ERROR = dispose(ResultCodeEnum.ERROR);
    /**通用业务异常*/
    public final static ResultCode BIZ_ERROR = dispose(ResultCodeEnum.BIZ_ERROR);
    /**文件超出最大限制*/
    public final static ResultCode FILE_OUT_MAX = dispose(ResultCodeEnum.FILE_OUT_MAX);
    /**文件格式不正确*/
    public final static ResultCode FILE_FORMAT_ERROR = dispose(ResultCodeEnum.FILE_FORMAT_ERROR);
    /** 参数错误*/
    public final static ResultCode PARAM_ERROR = dispose(ResultCodeEnum.PARAM_ERROR);
    /**Json解析异常*/
    public final static ResultCode JSON_FORMAT_ERROR = dispose(ResultCodeEnum.JSON_FORMAT_ERROR);
    /** Sql解析异常*/
    public final static ResultCode SQL_ERROR = dispose(ResultCodeEnum.SQL_ERROR);
    /**网络超时*/
    public final static ResultCode NETWORK_TIMEOUT = dispose(ResultCodeEnum.NETWORK_TIMEOUT);
    /** 未知的接口*/
    public final static ResultCode UNKNOWN_INTERFACE = dispose(ResultCodeEnum.UNKNOWN_INTERFACE);
    /**请求方式不支持*/
    public final static ResultCode REQ_MODE_NOT_SUPPORTED = dispose(ResultCodeEnum.REQ_MODE_NOT_SUPPORTED);
    /**系统异常*/
    public final static ResultCode SYS_ERROR = dispose(ResultCodeEnum.SYS_ERROR);
    private static ResultCode dispose(ResultCodeEnum codeEnum) {
        return ResultCode.builder().code(codeEnum.getCode()).msg(codeEnum.getMsg()).build();
    }
     public ResultCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

위 내용은 SpringBoot가 통합 캡슐화를 구현하고 프런트엔드 결과 세트를 반환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제