Backend/프로젝트
[SpringBoot JPA] BaseResponseMessage 작성하기
hsooooo
2022. 8. 17. 21:15
PostMan으로 실행 후, 아무것도 뜨지않아서 성공/에러 메세지를 출력 해야겠다고 생각했다.
📍constant 폴더 ➡️ SuccessCode.java, ExceptionCode.java
@Getter
@AllArgsConstructor
public enum SuccessCode {
CREATE_MYPLANT_SUCCESS(OK, "내 식물 등록하기를 성공했습니다.");
private final HttpStatus status;
private final String msg;
}
@Getter
@AllArgsConstructor
public enum ExceptionCode {
/* 400 - 잘못된 요청 */
NO_REQUIRED_PARAMETER(BAD_REQUEST, "필수 요청 파라미터 값이 없습니다");
/* 401 - 인증 실패 */
// token 관련
/* 403 - 허용되지 않은 접근 */
/* 404 - 찾을 수 없는 리소스 */
/* 409 - 중복된 리소스 */
private final HttpStatus status;
private final String msg;
}
📍dto 폴더 ➡️ BaseResponse.java
@Getter
@NoArgsConstructor
public class BaseResponse {
private Boolean success;
private String msg;
private LocalDateTime timestamp = LocalDateTime.now();
public BaseResponse(Boolean success, String msg) {
this.success = success;
this.msg = msg;
}
public static BaseResponse of(Boolean success, String msg) {
return new BaseResponse(success, msg);
}
public static ResponseEntity<BaseResponse> toCustomErrorResponse(
ExceptionCode exceptionCode) {
return ResponseEntity
.status(exceptionCode.getStatus())
.body(BaseResponse.of(false, exceptionCode.getMsg()));
}
public static ResponseEntity<BaseResponse> toBasicErrorResponse(HttpStatus status, String msg) {
return ResponseEntity
.status(status)
.body(BaseResponse.of(false, msg));
}
public static ResponseEntity<BaseResponse> toSuccessResponse(SuccessCode successCode) {
return ResponseEntity
.status(successCode.getStatus())
.body(BaseResponse.of(true, successCode.getMsg()));
}
}
📍dto-res-myplant 폴더 ➡️ MyPlantSaveResponse.java
@Getter
public class MyPlantSaveResponse extends BaseResponse {
private MyPlantSaveResponse(Boolean success, String msg) {
super(success, msg);
}
public static MyPlantSaveResponse of(Boolean success, String msg) {
return new MyPlantSaveResponse(success, msg);
}
public static ResponseEntity<MyPlantSaveResponse> newResponse(SuccessCode code) {
return new ResponseEntity(MyPlantSaveResponse.of(true, code.getMsg()), code.getStatus());
}
}
📍controller 폴더 ➡️ MyPlantApiController.java
@RequiredArgsConstructor
@RestController
@RequestMapping("/myplant")
public class MyPlantApiController {
private final MyPlantService myPlantService;
@PostMapping("/save")
public ResponseEntity<MyPlantSaveResponse> save(@RequestBody MyPlantSaveRequestDto requestDto) {
if (requestDto.getPlantName() == null | requestDto.getPlantType() == null | requestDto.getLevel() == 0) {
throw new CustomException(ExceptionCode.NO_REQUIRED_PARAMETER);
}
myPlantService.save(requestDto);
return MyPlantSaveResponse.newResponse(CREATE_MYPLANT_SUCCESS);
}
}
✅ 성공메세지 출력 결과 ➡️ 확인 완료~!
✅ 에러메세지 출력 결과 ➡️ 내가 정한 메세지 출력 안됨,, 고쳐야함~!