(인프런) 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 공부하고 리뷰한 글입니다.
1. HTTP 상태코드 소개
1. 상태 코드
상태코드는 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다.
1) 1xx (Informational): 요청이 수신되어 처리중
2) 2xx (Successful): 요청 정상 처리
3) 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요
4) 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
5) 5xx (Server Error):서버 오류, 서버가 정상 요청을 처리하지 못함
2. 만약 모르는 상태 코드가 나타나면?
클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면, 클라이언트는 상위 상태코드로 해석해서 처리한다.
미래에 새로운 상태코드가 추가되어도 클라리언트를 변경하지 않아도 됨
3. 1xx (Informational)
요청이 수신되어 처리중
- 거의 사용하지 않으므로 생략
2. 2xx (Successful)
클라이언트의 요청을 성공적으로 처리
- 200 OK
- 201 Created
- 202 Accepted
- 204 No Content
1. 200 OK
요청 성공
1) 클라이언트가 서버에 GET으로 리소스를 요청함
2) 서버가 리소스를 조회함
3) Stauts code: 200 과 리소스를 HTTP 응답 메시지를 만들어 클라이언트에 보냄
2. 201 Created
요청 성공 후 새로운 리소스 생성됨
1) 클라이언트가 서버에 POST로 신규 자원을 등록 요청함
2) 서버가 리소스를 생성하고 리소스의 URI를 관리함
3) Stauts code: 201, Location: 생성된 리소스의 URI 로 HTTP 응답 메시지를 만들어 클라이언트에 보냄
3. 202 Accepted
요청이 접수되었으나 처리가 완료되지 않음
- 배치 처리 같은 곳에서 사용, 잘 사용하지는 않음
e.g. 요청 접수 후 1시간 뒤 배치 프로세스가 요청을 처리함
4. 204 No Content
서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음
- 결과 내용이 없어도 204 메시지(2xx)만으로 성공 인식 가능함
e.g. 웹 문서 편집기의 save 버튼
- save 버튼의 결과로 아무 내용이 없어도 됨
- save 버튼을 눌러도 같은 화면을 유지해야 함
6-2. 2xx(성공) 질문 정리
Q. 201과 204 상태코드의 차이는 무엇인가요?
201과 204는 응답 메시지에 message-body(본문)을 포함하는지의 여부에 차이가 있다.
1) 201은 리소스를 새로 저장하고 저장된 경로를 Location에 포함해서 반환하며 응답 메시지에 본문을 첨부해도 된다.
2) 204는 응답 메시지에 본문을 첨부하면 안된다. 저장이 성공했고 결과 데이터를 반환할 일이 없을 때 사용하면 된다.
<200, 201, 204 사용 정리>
1) 200: 새롭게 업데이트한 페이지를 보여줘야 할 때 (GET, PATCH)
2) 201: 리소스를 신규로 생성했을 때 (POST)
3) 204: 사용자에게 보여지는 페이지를 바꾸지 않고 리소스를 업데이트할 때 (PUT)
[출처] https://www.inflearn.com/questions/127458
[참고] https://developer.mozilla.org/ko/docs/Web/HTTP/Status/204
'Spring > 모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글
[모든 개발자를 위한 HTTP 웹 기본 지식] 06. HTTP 상태코드 - 4xx(클라이언트 오류), 5xx(서버 오류) (0) | 2022.06.02 |
---|---|
[모든 개발자를 위한 HTTP 웹 기본 지식] 06. HTTP 상태코드 - 3xx(리다이렉션1), 3xx(리다이렉션2) (0) | 2022.06.02 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 05. HTTP 메서드 활용 - HTTP API 설계 예시 (0) | 2022.05.30 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 05. HTTP 메서드 활용 - 클라이언트에서 서버로 데이터 전송 (0) | 2022.05.30 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 04. HTTP 메서드 - HTTP 메서드의 속성 (0) | 2022.05.30 |