밤빵's 개발일지
[TIL]20240910 리젝(Reject) 본문
🤓리젝(Reject)
개발을 공부하면서 처음으로 '리젝(Reject)'이라는 단어를 접하게 되었다. 이 단어가 무엇을 의미하는지, 어떤 상황에서 사용하는지 잘 몰랐기 때문에 이번 기회에 리젝의 개념을 공부하고 기록하기로 했다. 리젝은 다양한 개발 환경에서 사용되지만, 특히 요청이나 작업이 거부되거나 실패할 때 주로 언급된다.
▶리젝이란?
리젝(Reject)은 "거부" 또는 "거절"을 의미하는 단어로, 개발 분야에서는 특정 요청이나 작업이 실패하거나 처리되지 않았음을 나타낸다. 주로 클라이언트와 서버 간의 통신에서, 클라이언트가 서버에 특정 요청을 보냈지만, 그 요청이 승인되지 않거나 처리되지 않을 때 사용된다. 예를 들어, 사용자가 잘못된 데이터를 입력했거나, 서버에서 처리할 수 없는 요청을 보냈을 때 서버는 이를 "리젝"할 수 있다. 리젝은 HTTP 요청과 같은 네트워크 통신에서 자주 등장하는 개념이며, 특히 백엔드 개발에서는 서버가 클라이언트의 잘못된 요청을 거부하거나 처리하지 못하는 경우를 나타낼 때 많이 사용된다.
▶리젝의 예시
리젝의 개념을 더 쉽게 이해하기 위해 HTTP 요청의 예시를 알아보았다. 클라이언트가 서버에 데이터를 요청할 때, 서버가 그 요청을 성공적으로 처리하지 못하는 경우, 리젝이라는 상태를 전달할 수 있다. HTTP 상태 코드로 표현하면 4xx 또는 5xx 에러 코드가 리젝된 요청에 해당한다.
▷ 예시: 400 Bad Request (잘못된 요청)
클라이언트가 서버에 데이터를 잘못된 형식으로 전송했을 때, 서버는 해당 요청을 거부하며 400 상태 코드를 반환할 수 있다.
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"error": "Invalid request format",
"message": "The data format is incorrect"
}
→ 예시에서 클라이언트는 서버에 잘못된 요청을 보냈고, 서버는 이 요청을 리젝하여 400 응답을 반환하였다. 이처럼 리젝은 클라이언트의 잘못된 요청을 서버에서 거절하는 경우에 사용된다.
▷예시: 서버 측에서의 리젝
백엔드 개발에서 리젝은 서버에서 요청을 거부하거나 처리할 수 없을 때 발생한다. 예를 들어, 자바 스프링 프레임워크에서 사용자가 인증되지 않은 상태로 보호된 리소스에 접근할 경우, 서버는 이를 리젝하고 403 Forbidden 상태 코드를 반환할 수 있다.
@GetMapping("/protected")
public ResponseEntity<String> getProtectedResource(Authentication authentication) {
if (authentication == null || !authentication.isAuthenticated()) {
return new ResponseEntity<>("Forbidden", HttpStatus.FORBIDDEN);
}
return new ResponseEntity<>("Access granted", HttpStatus.OK);
}
→ 이 코드 예시에서는 인증되지 않은 사용자가 보호된 리소스에 접근하려고 할 때 요청이 거부되고 403 Forbidden 상태 코드가 반환된다. 이처럼 서버는 클라이언트의 요청을 리젝하고 적절한 상태 코드와 메시지를 반환할 수 있다.
▶리젝이 발생하는 상황
리젝은 여러 상황에서 발생할 수 있다. 몇 가지 일반적인 리젝 상황을 정리해 보았다.
→ 잘못된 입력:
사용자가 잘못된 데이터를 입력했을 때, 예를 들어 필수 입력 필드가 비어있거나, 데이터 형식이 맞지 않으면 서버는 이 요청을 리젝할 수 있다.
→ 권한 부족:
사용자가 필요한 권한을 가지고 있지 않으면, 서버는 요청을 리젝하고 "권한 없음"이라는 메시지를 반환할 수 있다.
→ 서버 오류:
서버 자체에 문제가 있거나 과부하가 걸렸을 때도 요청이 리젝될 수 있다. 이 경우에는 주로 500번대 상태 코드가 반환된다.
▶리젝의 처리 방법
리젝이 발생했을 때, 이를 적절히 처리하는 것이 중요하다. 리젝은 시스템에서 오류나 실패가 발생한 것을 알려주는 중요한 신호이므로, 이를 무시하지 않고 적절하게 대처해야 한다.
→ 사용자 피드백 제공:
리젝된 요청이 있을 때, 사용자에게 명확한 피드백을 제공하는 것이 중요하다. 예를 들어, 입력 형식이 잘못된 경우에는 그 이유를 사용자에게 알려주고, 올바른 형식을 제시해야 한다.
→ 에러 핸들링:
서버에서 발생하는 리젝된 요청은 로그로 기록하고, 이에 대한 적절한 예외 처리를 해야 한다. 예를 들어, 잘못된 입력에 대한 유효성 검사를 미리 처리하거나, 권한 문제가 발생했을 때 적절한 예외를 던져야 한다.
→ 로깅:
서버에서 리젝된 요청은 반드시 로그로 남겨서 나중에 문제를 분석하고 해결하는 데 사용할 수 있다. 특히 500번대 서버 오류는 심각한 문제일 수 있으므로 반드시 로그로 기록해야 한다.
▶정리
리젝은 서버가 클라이언트의 요청을 처리하지 못할 때 발생하며, 주로 잘못된 요청이나 권한 문제, 서버 오류 등에서 나타난다. HTTP 요청뿐만 아니라 서버 측에서 발생하는 다양한 문제를 처리할 때 리젝은 중요한 개념으로, 실패한 작업을 처리할 때 유용하다. 리젝은 단순히 거절을 의미하는 것이 아니라, 문제를 해결하고 개선할 수 있는 단서를 제공한다는 점에서 중요한 역할을 한다.
'개발Article' 카테고리의 다른 글
[TIL]20240912 리플렉션(Reflection)과 자바철학 (0) | 2024.09.12 |
---|---|
[TIL]20240911 웹과 애플리케이션 (0) | 2024.09.11 |
[TIL]20240909 스택 트레이스(Stack Trace) (0) | 2024.09.09 |
[WIL]20240908 도메인 계층 (0) | 2024.09.08 |
[TIL]20240907 OUTER JOIN (1) | 2024.09.07 |