Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

밤빵's 개발일지

[TIL]20240910 리젝(Reject) 본문

개발Article

[TIL]20240910 리젝(Reject)

최밤빵 2024. 9. 10. 22:27

🤓리젝(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 요청뿐만 아니라 서버 측에서 발생하는 다양한 문제를 처리할 때 리젝은 중요한 개념으로, 실패한 작업을 처리할 때 유용하다. 리젝은 단순히 거절을 의미하는 것이 아니라, 문제를 해결하고 개선할 수 있는 단서를 제공한다는 점에서 중요한 역할을 한다.