반응형
개발을 하다 보면 수많은 오류가 발생하게 되고 발생하는 오류에 대해 적절한 HTTP Status Code로 핸들링하기는 어려움이 있습니다.
그렇기 때문에 공통적인 포맷을 만들고 Response status와 message로 Request에 대한 상태와 메시지를 돌려주는 코드를 만들어보겠습니다.
ResponseStatus
package com.hyuckang.springboot.utils; public enum ResponseStatus { SUCCESS, FAILURE, ERROR }
ResponseDto
package com.hyuckang.springboot.web.dto; import com.hyuckang.springboot.utils.ResponseStatus; import lombok.AllArgsConstructor; import lombok.Getter; @Getter @AllArgsConstructor public class ResponseDto<T> { private final ResponseStatus status; private final String message; private final T data; }
ResponseUtil
package com.hyuckang.springboot.utils; import com.hyuckang.springboot.web.dto.ResponseDto; public class ResponseUtil { public static <T>ResponseDto<T> SUCCESS (String message, T data) { return new ResponseDto(ResponseStatus.SUCCESS, message, data); } public static <T>ResponseDto<T> FAILURE (String message, T data) { return new ResponseDto(ResponseStatus.FAILURE, message, data); } public static <T>ResponseDto<T> ERROR (String message, T data) { return new ResponseDto(ResponseStatus.ERROR, message, data); } }
DemoController
package com.hyuckang.springboot.web.controller; import com.hyuckang.springboot.utils.ResponseUtil; import com.hyuckang.springboot.web.dto.ResponseDto; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @RestController public class DemoController { List<String> UserList = new ArrayList<>(); int userLimit = 5; @GetMapping("/user") public ResponseDto getUsers() { return ResponseUtil.SUCCESS("유저 조회에 성공하였습니다.", UserList); } @PostMapping("/user") public ResponseDto addUser(@RequestBody String userName) { if (UserList.size() < userLimit) { UserList.add(userName); return ResponseUtil.SUCCESS("유저를 추가하였습니다.", null); } else return ResponseUtil.ERROR("유저 추가 중 문제가 발생하였습니다.", null); } }
성공 응답
에러 응답
반응형
'JAVA > Spring' 카테고리의 다른 글
[SpringBoot] SNAPSHOT.jar와 SNAPSHOT-plain.jar (0) | 2022.03.17 |
---|---|
[SpringBoot] H2 Database 연결하기 (0) | 2022.03.13 |
[SpringBoot] application 설정파일 분리 (0) | 2022.03.09 |
[SpringBoot] 스프링부트 프로젝트 시작하기 (0) | 2021.09.13 |