spring boot 통합 JSON 형식의 인터페이스 반환 결과 구현

앞 뒤 가 분 리 된 프로젝트 개발 전에 데이터 반환 형식 을 미리 정 하고 본 고 는 JSON 을 중심 으로 한다.
첫 번 째 단 계 는 자바 빈 을 정의 합 니 다.

package com.yclouds.myhelper.web.response;
 
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yclouds.myhelper.web.error.code.BaseEnumError;
import java.io.Serializable;
import lombok.Data;
 
/**
 *             
 *
 * @author ye17186
 * @version 2019/2/15 14:40
 */
@Data
public class ApiResp<T> implements Serializable {
 
  private static final long serialVersionUID = 9211889136173018364L;
 
  /**
   *      
   */
  private static final int SUCCESS_CODE = 0;
 
  /**
   *       
   */
  private static final String SUCCESS_MSG = "SUCCESS";
 
  /**
   *    
   */
  private int code = SUCCESS_CODE;
 
  /**
   *     
   */
  private String msg = SUCCESS_MSG;
 
  /**
   *     ,   null
   */
  private T data = null;
 
  /**
   *        
   *
   * @return true=  ;false=  
   */
  @JsonIgnore
  public boolean isOK() {
    return code == SUCCESS_CODE;
  }
 
  /**
   *  data     
   */
  public static ApiResp retOK() {
    return new ApiResp();
  }
 
  /**
   *  data     
   *
   * @param data data  
   * @param <T> data  
   */
  public static <T> ApiResp<T> retOK(T data) {
    ApiResp<T> response = new ApiResp<>();
    response.setData(data);
    return response;
  }
 
  /**
   *  data     
   *
   * @param error     
   */
  public static ApiResp retFail(BaseEnumError error) {
    return retFail(error.getCode(), error.getMsg());
  }
 
  /**
   *  data     
   *
   * @param error     
   * @param data       
   */
  public static <T> ApiResp<T> retFail(BaseEnumError error, T data) {
    return retFail(error.getCode(), error.getMsg(), data);
  }
 
  /**
   *  data     
   *
   * @param code    
   * @param msg     
   */
  public static <T> ApiResp<T> retFail(int code, String msg) {
    ApiResp<T> response = new ApiResp<>();
    response.setCode(code);
    response.setMsg(msg);
    return response;
  }
 
  /**
   *  data     
   * <br>
   *          ,        T  
   *
   * @param code    
   * @param msg     
   */
  public static <T> ApiResp<T> retFail(int code, String msg, T data) {
    ApiResp<T> response = new ApiResp<>();
    response.setCode(code);
    response.setMsg(msg);
    response.setData(data);
    return response;
  }
}
두 번 째 단 계 는 Controller 에서 사용 합 니 다.

  @GetMapping("/test1")
  public ApiResp test1() {
 
    return ApiResp.retOK("Hello World");
  }
 
  @GetMapping("/test2")
  public ApiResp test2() {
 
    return ApiResp.retFail(BaseEnumError.SYSTEM_NO_LOGIN);
  }
Postman 에서 구체 적 인 응답 내용 을 볼 수 있 습 니 다.다음 과 같 습 니 다.


물론 ApiResp 의 범용 도 복잡 한 데이터 대상 을 사용 할 수 있다.실제 개발 에서 모든 오류 응답 은 자신의 응답 코드 코드 와 오류 정보 msg 가 있 습 니 다.예제 에서 BaseEnumError 의 매 거 진 종 류 를 통일 적 으로 정 의 했 습 니 다.구체 적 인 내용 은 제 github 프로젝트 를 참조 할 수 있 습 니 다https://github.com/ye17186/myhelper-spring-boot-starter
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기