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);
    }
}

 

 

 ✅ 성공메세지 출력 결과 ➡️ 확인 완료~!

 

 

 

 

 

 

 

 

 

 

 

 

 

 에러메세지 출력 결과 ➡️ 내가 정한 메세지 출력 안됨,, 고쳐야함~!