[HTTP 웹 기본 지식] 3. HTTP 메서드, HTTP 메서드 활용

건우·2025년 12월 7일

CS / 네트워크

목록 보기
3/6
post-thumbnail

1. HTTP API를 만들어보자

요구사항

회원 관리 API를 만든다고 가정해보면,

  • 회원 목록 조회
  • 회원 조회
  • 회원 등록
  • 회원 수정
  • 회원 삭제

이걸 어떻게 URI로 설계할까?

핵심은 “리소스 식별”이다.

제일 많이 하는 실수가 이거다.

/createMember
/updateMember
/deleteMember

이건 잘못된 접근이다.

우리가 식별해야 할 건 “행위”가 아니라 “리소스”다.

리소스란?

  • “회원 등록”이 리소스가 아니다.
  • “회원 수정”이 리소스가 아니다.
  • 회원(Member)이라는 개념 자체가 리소스다.

행위는 나중 문제다.

URI 설계 기본 구조

GET    /members          → 회원 목록
GET    /members/{id}     → 회원 조회
POST   /members          → 회원 등록
PATCH  /members/{id}     → 회원 수정
DELETE /members/{id}     → 회원 삭제

여기서 중요한 포인트:

  • 리소스는 명사
  • 행위는 HTTP 메서드

리소스와 행위는 반드시 분리하자
이 원칙이 REST의 핵심이다.


2. HTTP 메서드 - GET, POST

GET

  • 리소스 조회
  • 쿼리 파라미터로 데이터 전달

Ex.

GET /members?age=20

GET은 바디 사용 가능은 하지만 거의 쓰지 않는다.

POST

POST는 한 줄로 정의하기 어렵다.

“이 리소스 URI가 정한 방식대로 요청 데이터를 처리해라.”

즉, 정해진 의미가 없다.

대표적인 사용

  • 새 리소스 생성
  • 프로세스 처리
  • 다른 메서드로 애매할 때

Ex.

POST /members
POST /orders/{id}/start-delivery

POST vs PUT 차이

  • POST → 서버가 URI 생성
  • PUT → 클라이언트가 URI 지정

이 차이는 실무에서 매우 중요하다.


3. HTTP 메서드 -PUT, PATCH, DELETE

PUT

리소스를 “완전히 대체”

  • 있으면 덮어쓰기
  • 없으면 생성

Ex.

PUT /members/10

클라이언트가 100번 리소스를 직접 지정한다.

PATCH

부분 수정

Ex.

PATCH /members/100
{
  "age": 30
}

일부 필드만 변경.

DELETE

리소스 제거

Ex.

DELETE /members/100

4. HTTP 메서드의 속성

Safe (안전)

리소스를 변경하지 않는다.

  • GET
  • HEAD
  • OPTIONS
  • TRACE

로그 쌓이는 건 고려하지 않았다. “리소스 변경 여부”만 본다.

Idempotent (멱등)

여러 번 호출해도 결과가 같다.

  • GET
  • PUT
  • DELETE

POST는 아니다.

왜 중요할까?
→ 서버 타임아웃 시 재요청 가능 여부의 판단 기준이 된다.

Cacheable

응답을 캐시할 수 있는가?

이론상:

  • GET
  • HEAD
  • POST
  • PATCH

실무상:

  • 거의 GET만 캐시

5. 클라이언트 → 서버 데이터 전송 방식

쿼리 파라미터 (GET)

  • 정렬
  • 검색
  • 필터링

메시지 바디

  • POST
  • PUT
  • PATCH

회원가입, 주문, 수정 등

HTML Form 전송

Content-Type

  • application/x-www-form-urlencoded
  • multipart/form-data (파일 업로드)

HTML Form은 GET, POST만 지원한다는 점이 중요하다.

HTTP API 전송

  • 서버 ↔ 서버
  • 앱 ↔ 서버
  • SPA ↔ API

대부분

Content-Type: application/json

사실상 JSON이 표준이다.


6. HTTP API 설계 패턴

이 부분이 실무에서 제일 많이 쓰인다.

컬렉션(Collection) 방식

POST /members
  • 클라이언트는 ID를 모른다.
  • 서버가 ID를 생성한다.
  • Location 헤더로 알려준다.
201 Created
Location: /members/100

서버가 URI를 관리한다.

스토어(Store) 방식

PUT /files/star.jpg
  • 클라이언트가 URI를 직접 지정한다.
  • 파일 업로드 시스템에서 자주 사용한다.

클라이언트가 URI를 관리한다.

컨트롤 URI

REST스럽지 않지만 현실적인 방식이다.

POST /members/{id}/delete
POST /orders/{id}/start-delivery

HTML FORM 제약 때문에 자주 등장한다.


7. 정리

  • URI는 리소스만 식별한다.
  • 행위는 HTTP 메서드로 표현한다.
  • POST는 만능이지만 의미가 정해져 있지 않다.
  • PUT은 전체 대체, PATCH는 부분 변경이다.
  • 멱등성과 안전성은 실무에서 매우 중요하다.
  • 설계는 “일관성”이 가장 중요하다.

출처
모든 개발자를 위한 HTTP 웹 기본 지식 (김영한, 인프런, 2020)

1개의 댓글

comment-user-thumbnail
2025년 12월 7일

깔끔하게 잘 정리해놓은 것 같네요 종종 와서 참고하겠습니다~^^
화이팅입니다~!

답글 달기