Java

Rest Api 응답

doopang 2022. 12. 26. 10:34

CommonResult

@Getter
@Setter
public class CommonResult {

  @ApiModelProperty(value = "응답 성공여부 : true/false")
  private boolean success;

  @ApiModelProperty(value = "응답 코드 번호 : > 0 정상, < 0 비정상")
  private int code;

  @ApiModelProperty(value = "응답 메시지")
  private String msg;
}

 

SingleResult

@Getter
@Setter
public class SingleResult<T> extends CommonResult {

  private T data;
}

ListResult

@Getter
@Setter
public class ListResult<T> extends CommonResult {

  private List<T> list;
}

 

Service

@Service
public class ResponseService {
  public enum CommonResponse {
    SUCCESS(0, "성공하였습니다."),
    FAIL(-1, "실패하였습니다.");

    int code;
    String msg;

    CommonResponse(int code, String msg) {
      this.code = code;
      this.msg = msg;
    }

    public int getCode() { reutrn code; }
    public String getMsg() { return msg; }
  }

  // 단일건 결과를 처리하는 메소드
  public <T> SingleResult<T> getSingleResult(T data) {
    SingleResult<T> result = new SingleResult<>();
    result.setData(data);
    setSuccessResult(result);
    return result;
  }

  // 다중건 결과를 처리하는 메소드
  public <T> ListResult<T> getListResult(List<T> list) {
    ListResult<T> result = new ListResult<>();
    result.setList(list);
    setSuccessResult(result);
    return result;
  }

  // 성공 결과만 처리하는 메소드
  public CommonResult getSuccessResult() {
    CommonResult result = new CommonResult();
    setSuccessResult(result);
    return result;
  }

  // 실패 결과만 처리하는 메소드
  public CommonResult getFailResult(int code, String msg) {
    CommonResult result = new CommonResult();
    result.setSuccess(false);
    result.setCode(code);
    result.setMsg(msg);
    return result;
  }

  // 결과 모델에 api 요청 성공 데이터를 세팅해주는 메소드
  private void setSuccessResult(CommonResult result) {
    result.setSuccess(true);
    result.setCode(CommonResponse.SUCCESS.getCode());
    result.setMsg(CommonResponse.SUCCESS.getMsg());
  }
}

 

Controller

@RestController
@RequiredArgsConstructor
@RequestMapping("/info")
public class InfoController {

  private final ResponseService responseService;
  private final NoticeService noticeService;

  @GetMapping("/notice/{seq}")
  @ApiOperation("공지사항 조회")
  public CommonResult getNotice(@PathVariable Long seq) {
    return responseService.getSingleResult(noticeService.getNotice(seq));
  }
}