[API Documentation] REST API ② HTTP 메서드(GET, POST, PUT, DELETE)

먼저 살펴볼 REST API의 핵심 요소는 HTTP 메서드다.

이전 글에서 본 것처럼, HTTP 메서드는 클라이언트가 서버에 ‘리소스로 어떤 작업을 수행할지’ 명령하는 수단이다. HTTP 메서드의 종류는 매우 다양하지만, 그중에서도 GET, POST, PUT, DELETE 네 가지에 집중해 설명할 예정이다.


CRUD란?

그렇다면 왜 GET, POST, PUT, DELETE 이 네 가지 메서드가 중요한 걸까?
이들이 기본적인 데이터 처리 작업인 CRUD를 수행하기 위한 메서드고, 또 그만큼 자주 사용되기 때문이다.

CRUD는 본래 데이터베이스에서 데이터를 다룰 때 가장 기본이 되는 네 가지 작업, Create, Retrieve, Update, Delete의 앞 글자를 딴 용어다.

  • Create: 새로운 데이터 생성
  • Retrieve: 데이터 조회
  • Update: 데이터 수정
  • Delete: 데이터 삭제

REST API도 결국 클라이언트와 서버가 데이터를 주고받기 위한 수단이기 때문에, 자연스럽게 CRUD 작업을 포함한다. 그리고 이를 수행하는 데 사용되는 것이 바로 GET, POST, PUT, DELETE 메서드다.

각 CRUD 작업에 대응하는 HTTP 메서드는 다음과 같다.

CRUD 작업 HTTP 메서드 HTTP 메서드의 역할
Create POST 리소스 생성
Retrieve GET 리소스 조회
Update PUT (, PATCH) 리소스 수정
Delete DELETE 리소스 삭제

HTTP 메서드와 CRUD 작업이 엄밀히 1:1로 대응하는 것은 아니다. 예를 들어, PATCH 메서드는 PUT 처럼 리소스를 수정하는 데 사용된다. 또한, CRUD 외의 작업을 요청하는 HTTP 메서드도 많다.


네 가지 HTTP 메서드

이제 각 메서드가 어떤 상황에서 어떻게 사용되는지, 예시와 함께 알아보자.


🔍 GET: 리소스 조회

GET은 서버에 저장된 리소스를 읽어올 때 사용하는 메서드다.

  • 리소스 ID를 사용해 특정한 리소스를 지정할 수 있다.
  • 요청에 본문은 포함하지 않는다.

예: 도서(book) 정보를 관리하는 서버가 있다면 아래와 같이 요청할 수 있다.

  • 전체 책 목록 조회

      GET /book
    
  • ID가 1234인 책 정보 조회

      GET /book/1234
    


✍️ POST: 리소스 생성

PUT은 서버에 새로운 리소스를 생성할 때 사용한다.

  • 필요한 정보를 요청 본문에 포함한다.

예: 새로운 책 정보 생성 요청

POST /book
Content-Type: application/json

{
"title": "API 문서 이해하기",
"author": "홍길동",
"published_year": 2025
}


🛠️ PUT: 리소스 수정

PUT기존 리소스를 수정할 때 사용한다.

  • 일반적으로 ID를 사용해 특정한 리소스를 지정한다.
  • 덮어쓸 데이터를 본문에 포함한다.

예: ID가 1234인 책 정보 수정

PUT /book/1234
Content-Type: application/json

{
"title": "API 문서 이해하기",
"author": "홍길동",
"published_year": 2025
}

PUT은 전체 리소스를 덮어쓰는 방식으로 수정한다. 반면, 리소스를 일부만 변경하려면 PATCH라는 메서드를 사용해야 한다.


🗑️ DELETE: 리소스 삭제

DELETE는 서버에 특정 리소스를 삭제할 때 사용한다.

  • 일반적으로 ID를 사용해 특정한 리소스를 지정한다.
  • 요청에 본문은 포함하지 않는다.

예: ID가 1234인 책 정보 삭제

DELETE /book/1234

요약

지금까지 살펴본 내용을 정리하면 다음과 같다.

HTTP 메서드 CRUD 작업 설명 요청 URL 예시 요청 본문
GET Retrieve 리소스 조회 GET /book
GET /book/1234
없음
POST Create 새로운 리소스 생성 POST /book 있음
PUT Update 리소스 수정 PUT /book/1234 있음
DELETE Delete 리소스 삭제 DELETE /book/1234 없음
  • 본문 관련
    • GETDELETE 요청은 일반적으로 본문을 포함하지 않는다.
    • 반면, POSTPUT 요청은 일반적으로 리소스 데이터를 담은 본문을 포함한다.

        {
        "title": "API 문서 이해하기",
        "author": "홍길동",
        "published_year": 2025
        }
      
  • 리소스 ID 관련
    • GET 요청에서는 경우에 따라 리소스 ID를 지정해 특정 리소스를 조회할 수 있다.
    • PUTDELETE 요청에서는 일반적으로 리소스 ID를 지정한다.
    • 반면 POST 요청에서는 일반적으로 리소스 ID를 사용하지 않는다.

참고자료

Leave a comment