HTTP 웹 기본 지식 (4) - HTTP 메서드

오세창·2025년 2월 24일

HTTP 웹 기본 지식

목록 보기
4/8
post-thumbnail

본 게시글은 인프런의 모든 개발자를 위한 HTTP 웹 기본 지식 (김영한) 강의를 듣고 정리한 내용입니다.

HTTP 메서드


HTTP API를 만들어보자

API 설계를 할 때 가장 중요한 것은 리소스를 식별하는 것이다.

예를 들어, 회원 등록, 수정, 삭제와 관련된 API를 설계할 때, 회원 자체가 리소스가 된다. URI 설계는 리소스를 중심으로 정의해야 한다.

여기서 중요한 점은 행위를 URI에 포함하지 않고, HTTP 메서드를 활용하여 의미를 전달하는 것이다.


HTTP 메서드 - GET

GET 메서드는 리소스를 조회하는 용도로 사용된다. 서버에 전달하고자 하는 데이터는 주로 쿼리 파라미터를 통해 전달한다. 이때 메세지 바디를 함께 전달할 수는 있지만, 많은 서버가 이를 지원하지 않으므로 가능한 지양하는 것이 좋다.

GET 메시지 전달 과정

1. 메시지 전달

2. 서버 도착

3. 응답 데이터


HTTP 메서드 - POST

POST 메서드는 요청 데이터 처리를 위해 사용된다. 요청 데이터는 메시지 바디를 통해 서버로 전달된다. 서버는 전달된 요청 데이터를 처리하며, 주로 신규 데이터 등록이나 프로세스 처리에 사용된다.

POST는 단순히 리소스를 생성하는 것이 아니다!
컨트롤 URI를 사용하는 경우, 예를 들어 POST /orders/{orderId}/start-delivery와 같은 형태로, 리소스를 생성하지 않고 프로세스를 처리할 수도 있다. 또한 JSON 으로 조회 데이터를 넘겨야 하는데, GET 메서드를 사용하기 어려운 경우 POST 를 사용하기도 한다 !

POST 메시지 전달 과정

1. 메시지 전달

2. 신규 리소스 생성

3. 응답 데이터


HTTP 메서드 - PUT, PATCH, DELETE

PUT 메서드

리소스를 수정할 때 사용하며, 리소스를 대체하는 메서드이다.

  • 리소스가 있으면 대체, 없으면 생성된다 (덮어 씌움).
  • 동일 리소스가 있는 경우: PUT 요청 → 리소스 대체
  • 동일 리소스가 없는 경우: PUT 요청 → 리소스 생성
  • 중요: 클라이언트가 리소스를 식별해야 한다 (POST와 다름).
  • 클라이언트가 리소스 위치를 알고 URI를 지정해야 한다.

PATCH 메서드

리소스를 부분 변경할 때 사용된다.

  • PATCH가 지원되지 않는 서버도 있을 수 있다. 이 경우, POST를 사용해도 된다.

DELETE 메서드

리소스를 제거할 때 사용된다.


HTTP 메서드의 속성

안전 (Safe)

안전하다는 것은 호출해도 리소스가 변경되지 않음을 의미한다.

GET: 안전 (조회만 하므로 리소스를 변경하지 않음)
POST, PATCH, DELETE: 변경, 안전하지 않음

멱등 (Idempotent)

멱등성은 한 번 호출하든 여러 번 호출하든 결과가 동일해야 한다는 의미이다.

멱등 메서드

  • GET: 한 번 조회하든 여러 번 조회하든 같은 결과를 조회한다.
  • PUT: 리소스를 대체하므로 여러 번 호출하든 결과는 같다.
  • DELETE: 리소스를 삭제하므로 여러 번 호출하든 삭제된 상태로 남는다.
  • POST: 두 번 호출하면 중복된 결과가 발생할 수 있다.

활용

  • 서버에서 응답이 없을 경우, 멱등 메서드를 다시 호출해도 동일한 결과를 얻을 수 있다.
  • 이를 통해 자동 복구 메커니즘을 구현할 수 있다.

캐시 가능 (Cacheable)

  • 응답 결과 리소스를 캐시하여 재사용할 수 있는지 여부.
  • 캐시란 인터넷에서 요청한 리소스를 저장해두고, 이후에 재사용하는 것이다.
  • 캐시 가능 메서드:
    • GET, HEAD, POST, PATCH는 캐시가 가능하다.
    • 실제로는 GET, HEAD만 주로 캐시로 사용된다.
    • POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하므로 구현이 어려울 수 있다.

0개의 댓글