HTTP 204 No Content
의도적으로 본문이 비어 있는 성공 응답 — 요청은 성공했지만 돌려줄 내용이 없는 경우입니다.
HTTP 204의 의미
HTTP 204 No Content는 200과 마찬가지로 성공을 나타내지만, 응답에 의도적으로 본문이 없다는 점이 다릅니다. DELETE 요청에 대한 표준적인 응답이며, 객체를 다시 반환하는 것이 불필요한 PUT/PATCH 업데이트, 그리고 비콘(beacon)이나 로깅 엔드포인트에도 적합합니다.
204 응답은 본문을 포함하면 안 되므로, 클라이언트 코드에서 204 응답을 JSON으로 파싱하려 하면(예: fetch 이후 response.json() 호출) 오류가 발생합니다. 이는 매우 흔한 버그이므로 파싱하기 전에 상태 코드를 먼저 확인하세요.
204 응답이 발생하는 일반적인 원인
- DELETE 요청으로 리소스가 제거되었습니다.
- PUT 또는 PATCH 요청으로 리소스가 업데이트되었으며, 서버가 이를 다시 응답으로 돌려주지 않기로 한 경우입니다.
- 데이터를 기록하기만 하는 엔드포인트(분석 비콘, 헬스 체크)가 수신을 확인한 경우입니다.
개발자를 위한 모범 사례
- 204 응답에는 절대 본문을 포함하지 마세요. 많은 서버와 프록시가 이를 어길 경우 연결을 끊어버립니다.
- 클라이언트 코드에서는 .json() 또는 .text()를 호출하기 전에 상태 코드가 204인지 먼저 분기 처리하세요.
- 클라이언트가 업데이트된 표현을 필요로 한다면 204 대신 본문을 포함한 200을 반환하세요.
응답 예시
HTTP/1.1 204 No Content 날짜: Thu, 02 Jul 2026 10:00:00 GMT
자주 묻는 질문
204와 빈 본문을 가진 200의 차이는 무엇인가요?
실제 동작은 거의 동일하지만, 204는 본문이 없다는 것을 명시적으로 나타내며 클라이언트는 이를 파싱하려 시도해서는 안 됩니다.
204 응답에서 response.json()이 실패하는 이유는 무엇인가요?
204 응답에는 본문이 전혀 없으므로 파싱할 대상이 존재하지 않습니다. 파싱하기 전에 response.status === 204 여부를 확인하세요.
DELETE는 항상 204를 반환해야 하나요?
가장 흔히 쓰이는 방식입니다. 클라이언트가 삭제된 내용에 대한 세부 정보가 필요하다면 확인용 본문과 함께 200을 반환하는 것도 유효합니다.