코드 저장소

공부에는 끝이 없다!

HTTP

HTTP - HTTP 상태코드 (1)

VarcharC2K 2024. 1. 16. 20:50

HTTP 상태 코드란?

HTTP 상태 코드는 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려 주는 기능이다.

인터넷을 사용하다보면 403 Error라는 것을 가끔 보았을 것이다.

여기서 403이 바로 HTTP 상태 코드이다.

상태 코드는 크게 5분류로 이루어 진다.

  1. 1xx (Informational): 요청이 수신되어 처리중
  2. 2xx(Successful): 요청 정상 처리
  3. 3xx(Rediretion): 요청을 완료하려면 추가 행동이 필요
  4. 4xx(Client Error): 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음
  5. 5xx(Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함

만약, 클라이언트가 인식 할 수 없는 상태코드를 서버가 반환한다면 클라이언트는 상위의 상태코드로 해석하여 처리하며 따라서 새로운 상태 코드가 추가 되어도 클라이언트를 변경하지 않아도 된다는 장점이 있다.

예를 들어서 299라는 새로운 상태코드가 추가되어 클라이언트로 응답하게 된다면 클라이언트는 2xx이므로 Succeful이라는 상태라고 인식하고 451이라는 새로운 상태코드를 보낸다면 4xx로 인식하여 Client Error가 발생하였다고 인식하고 처리하면 된다.

 

그렇다면 분류별 상태코드를 확인해보고 대표적인 코드들을 살펴보자.


1. 1xx (Informational)

100번대의 상태코드는 요청이 수신되어 처리중이라는 informational한 코드이다.

하지만 최근에는 거의 사용하지 않으므로 그냥 이런 코드가 있다라는 정도만 알고 넘어가면 되겠다.

2. 2xx (Successful) - 성공

200번대의 HTTP 상태코드는 클라이언트의 요청을 성공적으로 처리했다는 것을 의미한다.

200번대의 대표적인 상태코드는 다음과 같다.

  • 200 OK
  • 201 Created
  • 202 Accepted
  • 204 No Content

1. 200 OK

200 OK는 요청 성공을 의미한다.

예를 들어 GET 메서드를 통해 무언가를 조회하는 요청을 보냈을때 정상적으로 처리가 되었다면 서버는 200 OK라는 상태코드와 함께 데이터를 반환할 것이다.

2. 201 Created

201 Created는 요청이 성공하여 새로운 리소스가 생성된 것을 의미한다.

이전에 Post를 통해서 회원 가입을 진행한다고 했을때, 서버에서 리소스를 생성하고 정상적으로 처리가 되었다면 201 Created를 반환할 것이다.

추가적으로 201의 경우 생성된 리소스를 Location이라는 필드를 통하여 식별할 수 있다.

예를 들어

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 34
Location: /members/1

{
	"userId":"1",
    "username":"hong"
}

라는 Post 응답 메시지가 있다면

Location에 있는 /members/1을 통하여 생성된 리소스를 식별하게 된다.

3. 202 Accepted

202번은 요청이 접수되었으나 처리가 완료되지 않은 것을 의미한다.

주로 배치 처리 같은 곳에서 사용 되는데, 예를 들어 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리하는 경우 요청 메시지가 오면 서버에서 202 상태코드를 통하여 정상적으로 요청을 접수 받았다는 것을 클라이언트에게 확인 시켜 줄 수 있다.

4. 204 No Content

204번은 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없을 때 사용된다.

좀더 쉽게 말하면 요청에 대한 결과 내용이 없을때 사용한다.

예를 들어 웹 문서 편집에서 임시저장 버튼을 누른다고 생각해보자.

이런 경우 클라이언트와 서버 모두 변경되는 것 없이 임시저장이라는 요청만 처리 되면 된다.

그런데 아무 변경이 없으니 제대로 처리 되었는지 알수가 없는데 이런 경우 204 코드를 통하여 요청을 정상적으로 처리 하였음을 알려주는 것이다.

 

일반적으로는 200, 201정도만 사용되고 다른 것은 사용하지 않는 경우가 많다.

HTTP 코드가 지나치게 많아지면 클라이언트에서 이를 일일이 처리하는 것이 더 힘들기 때문이다.

 

'HTTP' 카테고리의 다른 글

HTTP - HTTP 일반 헤더(1)  (0) 2024.01.19
HTTP - HTTP 상태코드 (2)  (0) 2024.01.17
HTTP - HTTP API 설계  (0) 2024.01.15
HTTP - HTTP 메서드 활용하기  (0) 2024.01.12
HTTP - HTTP 메서드의 속성  (0) 2024.01.11