http rfc9110 rest web-architecture standards

HTTP 시맨틱 완벽 가이드: 현대 웹 개발을 위한 RFC 9110 이해하기

웹의 핵심을 이해하세요. HTTP 메서드, 상태 코드 및 헤더 시맨틱을 다루는 RFC 9110 완벽 가이드입니다.

2026-04-11

HTTP 시맨틱 완벽 가이드: 현대 웹 개발을 위한 RFC 9110 이해하기

2022년, IETF는 여러 이전 RFC(RFC 7231 등)를 대체하여 HTTP 시맨틱에 대한 결정적인 권위를 갖는 RFC 9110을 발표했습니다. HTTP/2와 HTTP/3가 데이터 전송 방식을 바꾸었지만, 메서드, 상태 코드 및 헤더의 의미인 *시맨틱(Semantics)*은 여전히 웹의 기초로 남아 있습니다.

RFC 9110 (HTTP 시맨틱)이란 무엇인가요?

RFC 9110은 하이퍼텍스트 전송 프로토콜(HTTP)의 공통 아키텍처를 정의합니다. 이는 HTTP/1.1, HTTP/2 또는 HTTP/3와 같은 프로토콜 버전과 무관합니다. 403 Forbidden의 진정한 의미나 POST 요청이 PUT과 비교하여 어떻게 작동해야 하는지 알고 싶다면 RFC 9110이 가장 정확한 기준이 됩니다.

이 문서는 다음에 대한 일관된 어휘를 제공합니다.

  • 리소스(Resources) 및 URI.
  • 메시지(Messages) (요청 및 응답).
  • 메서드(Methods) (GET, POST 등).
  • 상태 코드(Status Codes) (200, 404 등).
  • 헤더 필드(Header Fields).

HTTP 시맨틱의 핵심 원칙

1. 요청 메서드 및 멱등성 (Idempotency)

RFC 9110에서 가장 중요한 개념 중 하나는 안전한(Safe) 메서드와 멱등성(Idempotent) 메서드의 구분입니다.

메서드 안전함 멱등성 설명
GET 부작용 없이 데이터를 검색합니다.
HEAD GET과 동일하지만 바디를 반환하지 않습니다.
PUT 아니요 리소스를 대체하며, 반복해도 추가 효과가 없습니다.
DELETE 아니요 리소스를 삭제합니다.
POST 아니요 아니요 데이터를 처리하며, 여러 요청이 여러 리소스를 생성할 수 있습니다.

2. 상태 코드 클래스

RFC 9110은 상태 코드를 다섯 가지 클래스로 정리합니다.

  • 1xx (정보): 요청을 받았으며 프로세스를 계속함.
  • 2xx (성공): 작업을 성공적으로 받았고 이해했으며 수락함.
  • 3xx (리다이렉션): 요청 완료를 위해 추가 작업이 필요함.
  • 4xx (클라이언트 오류): 요청에 잘못된 구문이 있거나 수행할 수 없음.
  • 5xx (서버 오류): 서버가 유효한 요청을 수행하지 못함.

실제 응용 시나리오

RESTful API 설계

RFC 9110을 따르면 API의 가독성이 높아지고 표준 HTTP 클라이언트 및 캐시가 예상대로 작동합니다. 예를 들어, 성공적인 POST 요청 후에 일반적인 200 OK 대신 201 Created를 사용하는 것입니다.

캐시 최적화

RFC 9110은 Vary, ETag, Last-Modified 헤더가 작동하는 방식을 정의합니다. 이를 올바르게 구현하면 CDN과 브라우저가 데이터를 효율적으로 캐싱하여 서버 부하를 줄일 수 있습니다.

콘텐츠 협상 (Content Negotiation)

프로토콜을 통해 클라이언트는 특정 형식(예: Accept: application/json)을 요청할 수 있으며, 서버는 사용 가능한 최상의 표현으로 응답할 수 있습니다.


비교: RFC 7231 vs. RFC 9110

RFC 9110은 HTTP의 작동 방식을 근본적으로 바꾸지는 않았지만 문서를 대폭 개선했습니다.

  • 통합: 여러 문서에 흩어져 있던 시맨틱을 하나로 합쳤습니다.
  • 명확성: 부분 콘텐츠(Range 요청) 및 인증과 관련된 모호한 점을 명확히 했습니다.
  • 버전 분리: "의미(Semantics)"를 "전송 방식(HTTP/1.1 vs HTTP/3)"과 명확히 분리했습니다.

자주 묻는 질문 FAQ

Q: RFC 9110은 HTTP/1.1에만 해당되나요?
A: 아니요. RFC 9110은 HTTP/2 및 HTTP/3를 포함한 모든 버전의 HTTP에 적용되는 시맨틱을 정의합니다.

Q: POST와 PUT의 차이점은 무엇인가요?
A: RFC 9110에 따르면 PUT은 멱등성을 가지며(특정 URI의 리소스를 대체), POST는 그렇지 않습니다(처리를 위해 데이터를 리소스에 제출).

Q: 403과 401 오류는 언제 사용해야 하나요?
A: 인증이 필요하지만 실패했거나 제공되지 않은 경우 401 Unauthorized를 사용합니다. 서버가 요청을 이해했지만 승인을 거부하는 경우(유효한 자격 증명이 있어도) 403 Forbidden을 사용합니다.


관련 도구

  • JSON 포맷터 - HTTP API의 JSON 응답을 검사하는 데 적합합니다.
  • URL 인코더/디코더 - HTTP 표준에 따라 유효한 URI를 준비하는 데 필수적입니다.
  • JWT 디코더 - Authorization 헤더에 포함된 토큰을 해독할 때 사용합니다.