해당 글은 VSFe 깃허브 레포를 참고하여 작성한 글입니다. (아래 출처에 표기)
✅ HTTP 응답코드에 대해 설명해 주세요.
- HTTP 응답코드는 서버가 클라이언트의 요청을 처리한 결과를 나타내며, 세 가지 숫자로 구성된 상태 코드와 그에 대한 간단한 설명으로 구성된다. 응답 코드는 크게 다섯 가지 범주로 나뉜다.
- 1xx (정보): 서버가 요청을 받았으며, 해당 프로세스를 계속한다는 의미이다.
- 100 (Continue): 요청을 계속 진행하라는 의미이다. 클라이언트가 요청의 일부를 보내고 서버의 승인을 기다릴 때 사용된다.
- 2xx (성공): 요청이 성공적으로 처리되었음을 나타낸다.
- 200 (OK): 요청이 성공적으로 처리되었음을 의미한다.
- 201 (Created): 요청이 성공적으로 처리되었으며, 그 결과로 새로운 리소스가 생성되었음을 의미한다.
- 202 (Accepted): 서버가 요청을 접수하였으나, 아직 처리하지 않았음을 의미한다.
- 204 (No Content): 요청이 성공적으로 처리되었지만 반환할 콘텐츠가 없음을 의미한다.
- 3xx (리다이렉션): 요청을 완료하기 위해 추가 작업이 필요함을 의미한다.
- 301 (Moved Permanently): 지정한 리소스가 새로운 URI로 영구적으로 이동했음을 의미한다.
- 302 (Found): 요청한 리소스가 임시로 다른 URI에 위치해 있음을 의미한다.
- 304 (Not Modified): 요청한 리소스가 수정되지 않았음을 의미한다. 캐시된 리소스를 사용할 수 있다.
- 4xx (클라이언트 오류): 클라이언트의 요청에 오류가 있음을 나타낸다.
- 400 (Bad Request): 요청의 구문이 잘못되었음을 의미한다.
- 401 (Unauthorized): 요청한 리소스에 대한 액세스(접근) 권한이 없어 인증이 필요함을 의미한다.
- 403 (Forbidden): 서버가 요청을 이해했지만, 요청한 리소스에 대한 액세스(접근)가 금지되었음을 의미한다.
- 404 (Not Found): 요청한 리소스를 찾을 수 없음을 의미한다.
- 5xx (서버 오류): 서버가 요청을 처리하는 도중 오류가 발생했음을 의미한다.
- 500 (Internal Server Error): 서버 내부에 오류가 발생했음을 의미한다.
- 502 (Bad Gateway): 게이트웨이 또는 프록시 서버가 잘못된 응답을 수신했음을 의미한다.
- 503 (Service Unavailable): 서버가 현재 요청을 처리할 수 없음을 의미한다. 서버가 과부하 상태거나 유지 보수 중일 때 사용한다.
- 504 (Gateway Timeout): 게이트웨이 또는 프록시 서버가 정해진 시간 내에 클라이언트의 요청을 처리하지 못했음을 의미한다.
- 1xx (정보): 서버가 요청을 받았으며, 해당 프로세스를 계속한다는 의미이다.
✅ 401 (Unauthorized) 와 403 (Forbidden)은 의미적으로 어떤 차이가 있나요?
- 401 (Unauthorized): 요청이 인증되지 않았거나, 제공된 인증 정보가 유효하지 않음을 의미한다.
- 사용 예시: 인증 정보가 없거나 잘못된 경우, 인증 헤더가 없는 경우 등
- 해결 방법: 인증 정보(사용자명과 비밀번호 등)를 제공하거나, 다시 로그인해야 한다.
- 403 (Forbidden): 요청이 서버에 의해 이해되었으나, 권한 문제로 인해 거부되었음을 의미한다.
- 사용 예시: 사용자가 해당 리소스에 접근할 권한이 없을 때, 접근이 금지된 페이지 등
- 해결 방법: 권한을 부여받아야 하며, 관리자에게 요청해 권한을 확인해야 한다.
✅ 200 (OK) 와 201 (Created) 의 차이에 대해 설명해 주세요.
- 200 (OK): 요청이 성공적으로 처리되었으며, 서버가 요청한 리소스를 반환했음을 의미한다.
- 사용 예시: GET 요청에 의해 요청한 리소스를 성공적으로 반환할 때 등
- 전송 데이터: 일반적으로 요청된 데이터 또는 결과가 본문에 포함된다.
- 201 (Created): 요청이 성공적으로 처리되었으며, 새로운 리소스가 생성되었음을 의미한다.
- 사용 예시: POST, PUT 요청에 의해 새로운 리소스가 생성되었을 때 등
- 전송 데이터: 새로 생성된 리소스의 URI가 응답의 Location 헤더에 포함되며, 본문에는 생성된 리소스의 상세 정보가 포함될 수 있다.
✅ 필요하다면 저희가 직접 응답코드를 정의해서 사용할 수 있을까요? 예를 들어 285번처럼요.
- 표준 HTTP 응답 코드는 RFC 7231에 정의된 범위 내에서 사용해야 한다. 100~599번대까지의 응답 코드는 각각 특정한 의미를 갖고 있으며, 통신하는 클라이언트와 서버 간의 일관성을 유지하기 위해 표준 코드를 사용하는 것이 권장되지만, 특정 애플리케이션 내에서만 통용되는 경우 사용할 수 있다.
- 호환성: 특정 비즈니스 로직을 위해 285번과 같은 사용자 정의 응답 코드를 사용한다면, 클라이언트와 서버 모두 이 응답 코드를 이해하고 처리할 수 있어야 한다. 이는 다른 시스템이나 클라이언트에서 인식하지 못할 수 있어 예기치 못한 동작을 초래할 수 있다.
- 가독성, 유지 보수: 사용자 정의 응답 코드는 문서화되어 있는 표준 응답 코드와 달리 가독성과 유지 보수 측면에서 어려움을 겪을 수 있다.
📍 문제 출처
Tech-Interview / 03-NETWORK.md
📍 참고 자료
'Programming > Network' 카테고리의 다른 글
[Network] HTTP/1.1, HTTP/2.0, HTTP/3.0 (0) | 2024.07.28 |
---|---|
[Network] 소켓, 웹소켓, 포트 (0) | 2024.07.28 |
[Network] HTTP와 HTTPS의 보안 - 대칭키/공개키, SSL/TLS (0) | 2024.07.28 |
[Network] HTTP Method (0) | 2024.07.23 |
[Network] 쿠키와 세션 (0) | 2024.07.19 |