본문 바로가기
2025 Dev Log/2025.Backend

[#3][다시, 처음부터 #3]HTTP 상태 코드(HTTP Status Code) 와 API 응답 설계

by Dev.후크리 2025. 9. 11.
1. 개념 설명 (Concept)
  • HTTP 상태 코드(HTTP Status Code):
    클라이언트 요청에 대해 서버가 어떤 결과를 반환했는지 숫자로 알려주는 규약.
    • 2xx: 성공(Success) → 요청이 정상적으로 처리됨
    • 3xx: 리다이렉션(Redirection) → 다른 위치로 이동 필요
    • 4xx: 클라이언트 오류(Client Error) → 잘못된 요청
    • 5xx: 서버 오류(Server Error) → 서버 문제
  • API 응답(Response) 설계:
    • 단순히 데이터를 주는 게 아니라, 상태 코드 + 메시지 + 데이터 구조로 통일해야 클라이언트가 해석하기 쉽다.
    • 예 (Spring Boot 기준 JSON 응답 예시)
{ "status": 200, "message": "조회 성공", "data": { "userId": 1, "name": "Lee Kyunghoon" } }

2. 올바른 용어 (Terminology)
  • HTTP Status Code (HTTP 상태 코드)
  • Response Body (응답 본문)
  • Response Header (응답 헤더)
  • Error Handling (오류 처리)
  • Payload (페이로드, 응답 데이터 자체)

3. 잘못 쓰기 쉬운 표현 + 실제 맥락 (Misuse & Context)
  • ❌ “에러 났다 = 서버 터졌다” → 문법 오류나 서버 크래시가 아니라 HTTP 4xx/5xx 응답을 말하는 경우가 많음.
  • ❌ “200 OK만 쓰면 되잖아요?” → 현업에서는 201 Created, 204 No Content, 400 Bad Request, 404 Not Found, 500 Internal Server Error 등을 정확히 구분해야 함.
  • ✅ 실제 맥락: “유저 생성 API는 성공 시 201을 반환하고, body에는 새 유저의 id를 포함시킵시다.”

4. 면접 예시 (Interview Q&A)
  • Q: API에서 회원가입 성공 시 어떤 상태 코드를 반환하는 게 맞나요?
    • A: 일반적으로 201 Created를 반환하고, 생성된 리소스의 위치를 Location 헤더에 담을 수 있습니다.
  • Q: 200 OK와 204 No Content의 차이는 무엇인가요?
    • A: 200 OK는 응답 본문에 데이터를 포함할 때, 204 No Content는 성공했지만 반환할 데이터가 없을 때 사용합니다.

5. 검증 요약 (Self-Check)
  • 가정: HTTP 상태 코드와 API 응답 구조를 아직 헷갈릴 수 있음.
  • 확인 포인트: 2xx/3xx/4xx/5xx 범위별 의미 구분, API에서 status/message/data 구조 설계.
  • 리스크: 모든 API에서 무조건 200만 쓰면, 클라이언트가 상황을 제대로 파악하지 못함.
  • 최종 자신도: 높음 (기초 개념 + 실무 맥락까지 정리됨).

6. 추가 학습 과제 (Next Task)

👉 자주 쓰이는 상태 코드 5개는 꼭 외워야 합니다.

코드의미사용 예시
200 OK 성공 일반 조회
201 Created 생성됨 회원가입, 게시글 작성
204 No Content 성공했으나 본문 없음 삭제 API
400 Bad Request 클라이언트 잘못 파라미터 누락
500 Internal Server Error 서버 오류 DB 장애, NullPointerException

3일차 확인 퀴즈

 

1, HTTP 상태 코드 범위별 의미를 올바르게 짝지으세요.

  • (A) 2xx
  • (B) 3xx
  • (C) 4xx
  • (D) 5xx
    ① 서버 오류(Server Error)
    ② 성공(Success)
    ③ 클라이언트 오류(Client Error)
    ④ 리다이렉션(Redirection)

 

 

정답: a=2, b=4, c=3, d=1 


 

2, 회원가입 API를 설계한다고 가정할 때, 성공적으로 유저가 생성되었을 때 적절한 상태 코드는 무엇인가요?
① 200 OK
② 201 Created
③ 204 No Content
④ 400 Bad Request

 

정답:  2


 

3, 다음 중 204 No Content가 적절한 상황은 무엇일까요?
① 유저 프로필 조회 성공 시
② 회원가입 성공 시 새 유저 ID 반환
③ 특정 게시글 삭제 성공 시
④ 잘못된 요청 파라미터가 들어왔을 때

 

정답:  3


 

 

4, 클라이언트가 잘못된 요청을 보낸 경우 반환해야 하는 상태 코드는?
① 200
② 201
③ 400
④ 500

 

 

정답:  3


5, API 응답 설계에서 status, message, data 구조를 쓰는 이유로 옳은 것은?
① 서버 코드가 줄어들기 때문
② 클라이언트가 응답을 해석하기 쉽게 하기 때문
③ 모든 요청이 200 OK로 끝나기 때문
④ DB 성능을 향상시키기 때문

 

 

정답:  4


✨ 핵심 정리 (3일차 최종 복습)
  • 200 OK: 일반 조회 성공
  • 201 Created: 생성 성공 (회원가입, 게시글 작성)
  • 204 No Content: 성공했지만 본문 없음 (삭제 API)
  • 400 Bad Request: 클라이언트 요청 잘못
  • 500 Internal Server Error: 서버 내부 오류

👉 그리고 응답은 status + message + data 구조로 통일해야, 클라이언트가 상황을 정확히 해석 가능!