HTTP

[HTTP 완전 정복 시리즈] 6편 - HTTP 메서드 활용법과 설계 전략

dev-nadan 2025. 7. 22. 16:42

이전 편에서는 각 HTTP 메서드의 특징과 상태코드에 대해 정리했다.
이번에는 실무에서 HTTP 메서드를 어떻게 활용하는지, 그리고 RESTful API를 어떻게 설계해야 하는지에 대해 정리해본다.


정적 리소스는 GET으로 단순 조회

  • 정적 리소스(예: 이미지, 정적 HTML, JS)는 GET 메서드로 간단히 조회한다.
  • URL에 파라미터 없이 리소스 경로만으로 접근하는 것이 기본이다.
    예: /images/logo.png

GET + 쿼리파라미터: 검색, 필터, 정렬

  • 검색 조건, 정렬 방식, 필터링 등은 쿼리 파라미터로 전달한다.
    예: /posts?category=java&sort=recent
  • 다만, 리소스를 수정하는 요청에는 절대 GET을 사용하지 않아야 한다.

HTML Form과 HTTP 메서드 제한

  • <form> 태그는 GET, POST만 지원한다.
  • 때문에 PUT, PATCH, DELETE 요청은 자바스크립트 혹은 API 호출로 처리해야 한다.
  • HTML 폼에서 method가 GET이면 요청 데이터는 쿼리 파라미터에 포함된다.

파일 전송: multipart/form-data

  • 파일 업로드 시에는 POST 방식과 Content-Type: multipart/form-data를 사용한다.
  • HTML 폼에서도 enctype 설정을 통해 쉽게 업로드 가능하다.
    예: <form method="POST" enctype="multipart/form-data">

API 설계 시 컬렉션 vs 스토어

RESTful API를 설계할 때 리소스의 등록 방식에 따라 두 가지 스타일로 나뉜다.

1. POST 기반 컬렉션(Collection)

  • 서버가 리소스 URI를 생성하고 관리
  • 클라이언트는 /users에 POST 요청만 보내면 된다.
  • 회원가입, 게시글 등록 등에 적합
  • 예: POST /users

2. PUT 기반 스토어(Store)

  • 클라이언트가 리소스 URI를 지정하고 관리
  • 파일 업로드처럼 고유 경로를 클라이언트가 지정할 때 사용
  • 예: PUT /files/image123.png

실무에서는 대부분 POST 방식의 컬렉션 스타일이 사용된다.
PUT 방식은 드물며, 주로 파일 업로드 API 등에서 제한적으로 활용된다.

 


컨트롤 URI란?

  • HTML Form은 GET/POST만 지원 → 메서드 표현에 제한이 있다.
  • 그래서 /users/delete 같은 동사 기반 URI를 사용하는 경우도 있다.
  • 이런 경로를 컨트롤 URI라고 부르며, 실무에서 여전히 많이 쓰인다.
    예: POST /orders/cancel

리소스 설계 개념 정리

HTTP 메서드를 기반으로 한 API 설계를 단순화하기 위해 4가지 유형으로 나눌 수 있다.

개념설명
문서(Document) 하나의 리소스를 의미함. 예: /posts/1
컬렉션(Collection) 서버가 관리하는 리소스 디렉토리. 예: /posts
스토어(Store) 클라이언트가 직접 관리하는 디렉토리. 예: /files/image1.png
컨트롤러(Controller) REST로 표현하기 어려운 동작. 예: /users/reset-password
 

요약

  • 정적 조회는 GET, 리소스 등록은 POST를 사용한다.
  • HTML Form은 GET과 POST만 지원 → 제약 있음
  • 파일 전송은 multipart/form-data로 처리
  • API 설계는 컬렉션(POST) vs 스토어(PUT) 구분
  • REST로 표현하기 어려운 행동은 컨트롤 URI로 보완한다.