[TIL] Git 협업 시 PR 대기 중 다음 기능 작업은 어떻게 해야할까?, @RequestB…
in TIL on Til, Git Last modified at:
2025-05-06 TIL
📝 TIL (Today I Learned)
🔗 원본 이슈: #51
📅 작성일: 2025-05-06
🔄 최종 수정: 2025년 05월 22일
🍀 새롭게 배운 것
1️⃣ Git 협업 시 PR 대기 중 다음 기능 작업은 어떻게 해야할까?
- 티스토리에 첫 글을 올려봤다! (연휴의 소소한 재미..)
- 티스토리 첫 게시물
2️⃣ @RequestBody가 String을 받을 때 역직렬화를 하지 않는다..?
@RequestBody
는 일반적으로 JSON을 자바 객체로 역직렬화(deserialize) 하기 위해 사용된다.하지만 파라미터 타입이
String
이면, 역직렬화 과정을 거치지 않고 그냥 원본 요청 바디 내용을 그대로 문자열로 전달한다.@PostMapping("/echo") public String echo(@RequestBody String body) { return body; // 요청 JSON 전체를 String으로 받는다 }
- 그래서 요청 바디가 JSON이라도
String
으로 받으면 파싱되지 않고 JSON 문자열 그대로 처리됨. 실제 객체로 매핑하려면 DTO로 받아야 한다.
public String echo(@RequestBody SomeDto dto) { ... }
3️⃣ Custom Exception
- 참조: SpringBoot Custom Exception 처리 velog 글
- 반복되는 예외 처리 코드를 줄이기 위해 커스텀 예외를 정의해 사용하는 방식.
예외 클래스를
RuntimeException
을 상속해 만들고, 상황에 따라 적절한 에러 메시지와 상태 코드를 담아준다.public class CustomException extends RuntimeException { private final ErrorCode errorCode; public CustomException(ErrorCode errorCode) { super(errorCode.getMessage()); this.errorCode = errorCode; } public ErrorCode getErrorCode() { return errorCode; } }
그리고
@RestControllerAdvice
와@ExceptionHandler
를 활용해 예외 발생 시 일관된 응답 형태로 처리할 수 있다.@RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(CustomException.class) public ResponseEntity<ErrorResponse> handleCustomException(CustomException e) { return ResponseEntity .status(e.getErrorCode().getStatus()) .body(new ErrorResponse(e.getErrorCode())); } }
예외 상황을 명확하게 정의하고, 중복 처리 로직을 줄일 수 있어서 실무에서 매우 유용하다는 느낌! 다음에는 ErrorCode enum을 활용한 설계 패턴도 같이 정리해보자.