HTTP Status Code 204의 재밌는 점

Restart Programmer
3 min readAug 19, 2023

--

회사 작업을 하면서 HTTP API를 어떻게 해야 회사 도메인의 문제를 해결하면서도, 짧고 세련되도록 API를 줄 수 있을까 고민을 많이 했다.

그러다가 유독 관심 가진 부분이 있는데, 어떻게 받아야 좋을 것이고, 어떻게 API를 표현할 것인가? 즉 request, response를 어떻게 제공받고, 제공해주는게 좋을지에 대한 원론적인 고민을 정말 많이 했다.

그러다 보니 자연스럽게 가장 고민하게 된 부분 중 하나인 API의 결과 상태를 어떻게 보내줄지 였고, HTTP Status Code에 대한 고민에 빠졌다.

418

HTTP Status Code는 제대로 자주 사용하고 상세하게 설명할 수 있는 유용한 값 부터, 위의 이미지 처럼 장난식 상태 코드도 있다. (개인적으로 418를 제일 좋아한다.)

그리고 내가 이번에 개발하면서 겪은 재밌는 코드인 204 상태값에 대해서 알아보자.

204 : No Content

200번대이기 때문에 상태 코드로는 성공이다. 그러나 내용물이 없다고 한다. 이게 무슨 조건인가?

나는 이것을 성공적인 삭제로 생각하고, 너가 원하는 삭제는 잘 처리되었고, 내용은 없어졌다! 라는 의미로 사용하며, Payload에 성공적으로 삭제되었다는 내용의 Message를 알려줄려고 했다.

그러나 충격적이게도 Payload가 날라오지 않았다. (이 현상은 우선 express 기준으로 나온 다는 점을 고지한다.)

나는 내가 뭔가 잘못 만든 줄 알고 이것 저것 자꾸 시도해보았다. 심지어 Break point를 통해서 데이터가 정상적으로 서비스 코드에서 데이터는 Return 되었지만 Express에서 알아서 Payload가 나오지 않는 것이였다. (이거 때문에 야근했다.)

즉 진짜 내용물이 없이 나온다.

왜 내용물이 없이 나오는 것일까?

하나의 페이지에 정상적으로 삭제 또는 수정 등의 처리가 되었지만, 나갈 필요가 없다. 즉, 새로 데이터를 보여줄 필요가 없을때 사용하는 것이다.

즉, 나는 데이터 관점에서 수정과 삭제를 하고 데이터가 없음을 표시하는 HTTP 상태 코드로 이해했지만, 이 상태 코드의 진정한 의미는 데이터를 보여줄 필요가 없을때, HTTP의 Response에서 Body에 있는 유저에게 주는 데이터가 없다는 의미였다.

결론

  • HTTP Status Code 204 : Not Content는 잘 진행되었고, 클라이언트에 보내줄 데이터가 없다는 의미이다.
  • 일부 HTTP를 구현한 API 또는 프레임워크는 204일 경우 데이터가 보내지지 않을 수 있다.

참고자료

--

--