네트워크/HTTP

HTTP 상태 코드: 2xx (성공)

shimdh 2025. 3. 5. 10:08
728x90

웹 애플리케이션과 API에서 HTTP 상태 코드는 클라이언트의 요청이 어떻게 처리되었는지를 나타내는 중요한 지표입니다. 그중에서도 2xx(성공) 상태 코드는 요청이 정상적으로 처리되었음을 의미하며, 다양한 상황에서 클라이언트에게 긍정적인 응답을 제공합니다.

2xx 상태 코드는 데이터 조회(GET), 리소스 생성(POST), 요청 승인(ACCEPTED), 성공적인 처리(NO CONTENT) 등 다양한 작업에 사용됩니다. 이를 정확하게 이해하고 활용하면 효율적인 API 설계와 웹 애플리케이션 개발이 가능합니다.


1. 2xx 상태 코드란?

2xx 상태 코드는 클라이언트의 요청이 정상적으로 처리되었으며, 서버가 이에 대한 유효한 응답을 보냈음을 의미하는 HTTP 응답 코드입니다.

2xx 상태 코드의 주요 목적

  • 성공적인 요청 처리 알림: 클라이언트가 보낸 요청이 정상적으로 수행되었음을 명확하게 전달합니다.
  • 사용자 경험 향상: 적절한 응답 코드를 사용하면 클라이언트 애플리케이션이 이를 활용하여 더욱 직관적인 피드백을 제공할 수 있습니다.
  • RESTful API 설계의 핵심 요소: API에서 상태 코드를 올바르게 사용하면, 클라이언트가 API 응답을 효과적으로 해석할 수 있습니다.

📌 2xx 상태 코드는 요청의 유형에 따라 다양한 의미를 가지며, 특정한 사용 사례에서 적절하게 사용해야 합니다.


2. 주요 2xx 상태 코드 및 상세 설명

1) 200 OK

💡 요청이 정상적으로 처리되었으며, 서버가 유효한 응답 데이터를 반환할 때 사용

📌 설명:

  • 가장 일반적인 성공 응답 코드이며, 주로 GET, PUT, POST, DELETE 요청이 정상적으로 수행된 경우 반환됩니다.
  • 응답 본문(Body)에 요청한 데이터가 포함될 수 있습니다.

📌 사용 사례:

  • 사용자가 웹사이트에서 특정 페이지를 요청할 때, 페이지를 정상적으로 반환하면 200 OK가 응답됩니다.
  • API에서 데이터 조회 요청(GET)이 정상적으로 완료되었을 때 사용됩니다.

📌 요청 예시:

GET /api/products HTTP/1.1
Host: example.com

📌 서버 응답:

HTTP/1.1 200 OK
Content-Type: application/json

[
  {"id":1, "name":"Product A"},
  {"id":2, "name":"Product B"}
]

📌 효과: 클라이언트는 서버가 정상적으로 데이터를 제공했음을 인식하고, 응답을 활용하여 화면을 구성할 수 있습니다.


2) 201 Created

💡 서버가 새로운 리소스를 성공적으로 생성했음을 나타냄

📌 설명:

  • 주로 POST 요청이 성공적으로 수행되었을 때 사용되며, 서버가 새로 생성된 리소스의 위치(URI)를 응답에 포함해야 합니다.
  • RESTful API에서 회원가입, 게시물 작성, 상품 추가 등 새로운 엔티티를 생성할 때 활용됩니다.

📌 사용 사례:

  • 사용자가 회원가입을 완료했을 때, 서버가 새로 생성된 계정의 정보를 클라이언트에 제공.
  • 사용자가 블로그 게시물을 새로 작성한 경우, 생성된 게시물의 ID를 응답으로 제공.

📌 요청 예시:

POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "username": "new_user",
  "password": "secure_password"
}

📌 서버 응답:

HTTP/1.1 201 Created
Location: /api/users/12345
Content-Type: application/json

{
  "id": 12345,
  "username": "new_user"
}

📌 효과: 클라이언트는 Location 헤더를 참고하여 새로 생성된 리소스의 URI를 알 수 있으며, 이후 이를 기반으로 추가 요청을 보낼 수 있습니다.


3) 202 Accepted

💡 요청이 수락되었지만, 아직 처리가 완료되지 않았음을 의미

📌 설명:

  • 주로 비동기(Asynchronous) 작업에서 사용되며, 서버가 요청을 수락했지만 즉시 완료할 수 없는 경우 반환됩니다.
  • 예를 들어, 대량 데이터 처리, 배치 작업, 비동기 메시지 큐 처리 등의 상황에서 유용합니다.

📌 사용 사례:

  • 클라이언트가 대량 데이터 처리를 요청했을 때, 서버가 즉각적으로 완료할 수 없을 경우 202 Accepted를 반환하여 요청이 수락되었음을 알림.
  • 이메일 전송 API 요청을 처리하는 경우, 이메일이 즉시 전송되지 않고 큐(queue)에 저장된 경우에도 사용할 수 있음.

📌 요청 예시:

POST /api/process-data HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "data": [/* some large dataset */]
}

📌 서버 응답:

HTTP/1.1 202 Accepted
Content-Type: application/json

{
  "message": "Your request is being processed."
}

📌 효과: 클라이언트는 요청이 성공적으로 접수되었지만, 최종 결과는 나중에 확인해야 함을 이해할 수 있습니다.


4) 204 No Content

💡 요청이 성공적으로 처리되었지만, 반환할 응답 본문이 없음

📌 설명:

  • 서버가 요청을 정상적으로 수행했지만, 클라이언트에게 반환할 데이터가 없는 경우 사용됩니다.
  • DELETE 요청이 성공적으로 완료되었거나, 특정 설정 변경 후 추가적인 응답이 필요하지 않은 경우 활용됩니다.

📌 사용 사례:

  • 사용자가 특정 게시물을 삭제했을 때, 서버는 204 No Content를 반환하여 삭제가 완료되었음을 알림.
  • API에서 특정 설정을 변경했지만, 변경된 값을 다시 제공할 필요가 없을 경우 사용.

📌 요청 예시:

DELETE /api/posts/12345 HTTP/1.1
Host: example.com

📌 서버 응답:

HTTP/1.1 204 No Content

📌 효과: 클라이언트는 추가적인 응답을 처리할 필요 없이, 요청이 정상적으로 수행되었음을 이해할 수 있습니다.


3. 2xx 상태 코드 사용 시 주의사항

1) 적절한 상태 코드 선택이 중요

  • 데이터 조회에는 200 OK,
  • 리소스 생성에는 201 Created,
  • 비동기 처리는 202 Accepted,
  • 반환할 내용이 없을 경우 204 No Content를 사용해야 합니다.

2) API 응답 설계 시 명확한 의미 부여

  • RESTful API에서 상태 코드를 올바르게 사용하면, 클라이언트가 API를 더욱 직관적으로 사용할 수 있습니다.

3) 202 Accepted의 후속 처리 고려

  • 202 Accepted는 요청이 완료되지 않은 상태이므로, 클라이언트가 후속 요청을 통해 최종 결과를 확인할 수 있도록 설계해야 합니다.

4. 결론

2xx 상태 코드는 웹 애플리케이션과 API에서 요청이 성공적으로 처리되었음을 나타내는 중요한 지표입니다.
200 OK는 일반적인 성공 응답으로 가장 많이 사용됩니다.
201 Created는 새로운 리소스가 생성되었을 때 사용됩니다.
202 Accepted는 비동기 처리를 위한 요청 수락을 의미합니다.
204 No Content는 성공적으로 수행되었으나 응답 본문이 필요하지 않을 때 활용됩니다.

💡 HTTP 상태 코드를 올바르게 사용하면, 더욱 직관적이고 효율적인 웹 애플리케이션과 API를 구축할 수 있습니다! 🚀

728x90