- 서버가 응답을 보낼 때 start-line에 있는 응답 코드를 봄
- 응답 헤더에는 API 요청에 대한 상태코드도 같이 보냄
- 상태코드는 세자리로 되어있는 해당번호에 각각의 의미가 존재
- 모든 상태코드를 알 필요는 없지만, 주로 쓰는 몇가지의 코드와 가장 앞자리숫자가 어떤 것을 의미하는지는 알아두자!
Response 메시지
start-line (상태줄) : API 요청 결과 (상태 코드, 상태 텍스트)
HTTP/1.1 404 Not Found
현재 중복 폴더 Error 발생 시 어떻게 응답되는지 Client 에러 메시지 확인
Client의 Error 처리에 대한 요구사항
Controller 코드 수정
ResponseEntity는 HTTP response object를 위한 Wrapper
를 담아서 response로 내려주면 간편하게 처리 가능
@PostMapping("/folders")
public ResponseEntity<RestApiException> addFolders(@RequestBody FolderRequestDto folderRequestDto,
@AuthenticationPrincipal UserDetailsImpl userDetails) {
try {
List<String> folderNames = folderRequestDto.getFolderNames();
folderService.addFolders(folderNames, userDetails.getUser());
return new ResponseEntity<>(HttpStatus.OK);
} catch(IllegalArgumentException ex) {
RestApiException restApiException = new RestApiException(ex.getMessage(), HttpStatus.BAD_REQUEST.value());
return new ResponseEntity<>(
// HTTP body
restApiException,
// HTTP status code
HttpStatus.BAD_REQUEST);
}
}
addFolders 메서드를 보면 이제 try-catch문을 통해서
return new ResponseEntity<>(HttpStatus.OK);return new ResponseEntity<>(
// HTTP body
restApiException,
// HTTP status code
HttpStatus.BAD_REQUEST);이렇게 나뉘어서 응답을 내주는 것 을 볼 수 있음
에러문구도 캐치하고, 그에 따라서 어느 부문에서 오류가 났는지 적어서 보내 줄 수 있음
@ExceptionHandler 사용
@ExceptionHandler
@ExceptionHandler
는 Spring에서 예외처리를 위한 애너테이션@ExceptionHandler
가 붙어있는 메서드는 Controller에서 예외가 발생했을 때 호출 되며, 해당 예외를 처리하는 로직을 담고 있음예외처리 적용 결과 확인