본문 바로가기

TIL

[HTTP response status codes] Successful responses

이번에 다뤄 볼 부분은 Successful responses입니다.

성공적인 요청에 대해 반환되는 상태 코드들은 클라이언트가 요청한 작업이 올바르게 처리되었음을 나타냅니다.

 

  • 200 OK: 요청이 성공적으로 처리되었습니다. HTTP 메서드에 따라 성공의 의미가 다릅니다:
    • GET: 리소스가 메시지 본문에 포함되어 전송됩니다.
    • HEAD: 응답에 리소스의 헤더만 포함됩니다.
    • PUT 또는 POST: 액션의 결과를 설명하는 리소스가 메시지 본문에 포함됩니다.
    • TRACE: 메시지 본문에 서버가 수신한 요청 메시지가 포함됩니다.
  • 201 Created: 요청이 성공적으로 처리되었으며, 새로운 리소스가 생성되었습니다. 일반적으로 POST 요청 후나 일부 PUT 요청 후에 반환됩니다.
  • 202 Accepted: 요청이 수신되었지만 아직 처리되지 않았습니다. 비동기 응답이 가능하지 않기 때문에 요청 처리 결과를 나중에 알릴 수 없습니다. 다른 프로세스나 서버가 요청을 처리할 때 또는 배치 처리에 사용됩니다.
  • 203 Non-Authoritative Information: 반환된 메타데이터가 원본 서버의 정보와 정확히 일치하지 않고, 로컬 또는 제3자 사본에서 수집된 경우입니다. 주로 미러 또는 백업 리소스에 사용됩니다. 그 외에는 200 OK 응답이 선호됩니다.
  • 204 No Content: 요청에 대한 콘텐츠가 없지만 헤더는 유용할 수 있습니다. 사용자 에이전트는 이 리소스의 캐시된 헤더를 새 헤더로 업데이트할 수 있습니다.
  • 205 Reset Content: 요청을 보낸 문서를 재설정하라는 메시지를 사용자 에이전트에 전달합니다.
  • 206 Partial Content: 클라이언트가 Range 헤더를 보내서 리소스의 일부만 요청했을 때 사용됩니다.
  • 207 Multi-Status (WebDAV): 여러 리소스에 대한 정보를 전달하며, 여러 상태 코드가 적절할 수 있는 상황에서 사용됩니다.
  • 208 Already Reported (WebDAV): <dav:propstat> 응답 요소 내부에서 사용되며, 여러 바인딩에서 동일한 컬렉션의 내부 멤버를 반복적으로 열거하지 않도록 합니다.
  • 226 IM Used (HTTP Delta encoding): 서버가 리소스에 대한 GET 요청을 처리하고, 응답이 현재 인스턴스에 적용된 하나 이상의 인스턴스 조작의 결과를 나타냅니다.

 

자주 사용하는 상태 코드

  1. 200 OK: 요청이 성공적으로 처리된 경우에 가장 많이 사용합니다. 데이터 전송, 리소스 업데이트, 또는 단순히 요청을 처리했음을 알릴 때 사용됩니다.
  2. 201 Created: 새로운 리소스가 생성되었을 때 사용됩니다. 특히 POST 요청 후 자주 사용됩니다.
  3. 204 No Content: 요청이 성공적으로 처리되었으나 반환할 콘텐츠가 없는 경우 사용됩니다. 주로 데이터 삭제 작업 후에 사용됩니다.
      // Success
      if (response?.data.code === 200) {
        setToken(response.headers.authorization);
        setSession(response.data.data);

        setTimeout(() => {
          setIsLoading(false);
          router.replace("/works");
        }, 1000);
      }

느낀 점

성공적인 응답 상태 코드는 각기 다른 상황에 따라 상세한 정보를 제공하여 클라이언트가 요청의 결과를 정확히 이해할 수 있도록 돕습니다. 특히, 200 OK와 201 Created는 가장 흔히 사용되며, 성공적인 데이터 전송 및 리소스 생성 작업을 명확히 알릴 수 있어 유용합니다. 202 Accepted는 비동기 처리나 배치 작업에 적합하여 클라이언트가 요청의 상태를 추적할 수 있도록 합니다.