[Spring JPA] 공통 응답 규격이 204 NO CONTENT에서 적용되지 않는 이유

김재진·2026년 1월 21일

내일배움캠프

목록 보기
40/70

1. 문제 상황

  • 이커머스 백오피스 프로젝트를 진행하며 모든 API 응답을 일정한 양식으로 반환하도록 구현하는 중 로그아웃 기능에서만 우리가 설정한 공통 응답 객체가 전달되지 않고, 응답 바디가 null로 반환되는 문제가 발생.

2. 원인 분석

  • 기존 로직: 로그아웃 성공 시 별도의 반환 데이터가 필요 없다고 판단하여 204 No Content 상태 코드를 반환하도록 설정함.

  • HTTP 스펙의 특징: HTTP 규약상 240 No Content는 "요청은 성공했으나 응답 페이로드(Body)에 보낼 데이터가 없음"을 의미. 따라서 서버에서 아무리 공통 응답 객체를 넘겨주려 해도, 브라우저나 클라이언트 레벨에서 바디를 무시하거나 사라지게 함.

  • 결과: 공통 응답 양식이 담기지 못하고 최종적으로 null이 반환됨.

3. 해결 방안

서비스의 일관된 응답 규격을 위해 다음과 같이 수정하여 문제를 해결함
1. HTTP 상태 코드 변경: 204 No Content 대신 200 OK를 사용하도록 변경.
2. 전용 상태 코드 정의: 공통 응답 양식 내부에 로그아웃 성공을 식별할 수 있는 전용 코드를 연결.
3. 결과: 이제 로그아웃 시에도 다른 API와 동일하게 우리가 정의한 공통 응답 양식이 정상적으로 반환.

4. 수정 후 응답 예시

// 수정 전 (null 반환)
null

// 수정 후 (공통 양식 적용)
{
  	"timestamp" : "2026-01-19T17:15:59.8350158"
    "status": 200,
    "message": "로그아웃에 성공하였습니다.",
    "data": null
}

5. 마무리

  • RESTful한 설계를 위해 204를 쓰는 것이 이론적으로는 맞을 수 있지만, 실제 프로젝트의 공통 응답 규격을 유지해야 하는 상황에서는 200 OK와 적절한 비즈니스 코드를 조합하는 것이 협업 측면에서 더 유리할 수 있다는 것을 배웠다.
  • 기술적 표준을 지키는 것과 팀 내 약속(Convention)을 지키는 것 사이에서 최선의 합의점을 찾아가는 과정을 경험.
profile
개발공부 처음해보는 사람

0개의 댓글