HTTP 메서드
HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간에 데이터를 교환하기 위한 대표적인 프로토콜입니다. HTTP가 작동하는 방식의 핵심에는 요청(Request)과 응답(Response)의 개념이 있으며, 이때 요청의 의도를 나타내는 것이 HTTP 메서드입니다.
일반적으로 사용되는 HTTP 메서드는 다음과 같습니다:
- GET
- HEAD
- POST
- PUT
- PATCH
- DELETE
- CONNECT
- OPTIONS
- TRACE
아래 표는 이러한 메서드를 간략히 정리한 예시입니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
위 표 중에서도 특히 자주 사용되는 메서드는 GET, HEAD, POST, PUT, PATCH, DELETE입니다. 이하에서는 이 여섯 가지 핵심 메서드를 중심으로 살펴보겠습니다.
참고 자료
- RFC 7231: HTTP/1.1
- MDN Web Docs: HTTP Methods
GET – 가져다주세요
GET
메서드는 서버에 특정 자원을 조회할 때 사용합니다. 이는 클라이언트가 서버에게 “이것을 가져다주세요.”라고 요청하는 것이며, “이것”에 해당하는 자원은 HTML, JSON, 이미지, 텍스트 파일 등 다양한 형태일 수 있습니다.
- 특징
- Safe: 서버에서 데이터를 가져오기만 하므로, 서버의 상태를 변경하지 않는 메서드로 간주됩니다.
- Idempotent: 같은 요청을 여러 번 반복해도 결과가 달라지지 않는 특성을 갖습니다(단, 서버 내부 상태에 영향을 주지 않는다면).
일상적으로 웹 브라우저의 주소창에 URL을 입력해 페이지를 불러올 때, 대부분 이 GET
메서드가 사용됩니다. 예를 들어, http://www.example.com
에 접속하면 아래와 같은 GET
요청 메시지가 전송됩니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
서버가 요청을 성공적으로 처리하면, HTML 문서와 같은 자원(응답 본문)을 포함한 200 OK
응답을 반환합니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
GET 요청과 쿼리 문자열
GET
요청은 일반적으로 요청 본문을 사용하지 않고, 쿼리 문자열을 통해 필요한 파라미터를 전달합니다. 다음 예시처럼 ?search=keyword
형태로 파라미터를 넘길 수 있습니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
HEAD – 헤더만 가져다주세요
HEAD
메서드는 GET
과 거의 동일한 요청을 수행하지만, 응답 메시지에 본문이 포함되지 않는 점에서 차이가 납니다. 즉, 서버에게 “해당 자원의 헤더 정보만 달라.”고 요청하는 방식입니다.
- 특징
- Safe:
HEAD
는 서버 상태를 변경하지 않습니다. - Idempotent: 반복 호출해도 서버 상태에 영향을 주지 않습니다.
- Safe:
아래 예시에서 HEAD
요청 메시지는 URI만 다르고, 나머지 구조는 GET
과 유사합니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
응답 메시지는 본문 없이 헤더만 반환되는 것을 확인할 수 있습니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
POST – 처리해 주세요
POST
메서드는 서버에 특정 작업을 수행하라고 요청하는 메서드입니다. 말하자면 “이것을 처리해 주세요.”라는 의미를 담고 있습니다.
- 특징
- 서버에 새로운 자원을 생성하거나, 다양한 데이터 처리 로직을 실행할 때 주로 사용됩니다.
- Non-idempotent: 같은 요청을 여러 번 반복하면, 그에 따라 서버 내부 상태나 생성되는 자원이 달라질 수 있습니다.
예를 들어, http://example.com/posting
페이지에서 게시글을 작성 후 [게시하기] 버튼을 누르면, POST
요청을 통해 폼에 입력된 데이터를 서버로 전송합니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
아래는 실제 POST
요청 메시지 예시입니다. 메시지 본문에 게시할 내용이 담겨 전송됩니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
자원 생성과 Location 헤더
POST
요청이 성공적으로 처리되어 새로운 자원이 생성될 경우, 서버는 응답 메시지의 Location
헤더를 통해 새 자원의 URI를 알려줄 수 있습니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
PUT – 덮어써 주세요
PUT
메서드는 지정한 자원에 대해 “덮어쓰기”를 요청합니다.
- 자원이 존재하지 않을 경우, 새로운 자원을 생성하고,
- 자원이 이미 존재할 경우, 그 자원을 완전히 대체합니다.
- 특징
- Idempotent: 같은
PUT
요청을 여러 번 보내도 결과가 동일하게 유지됩니다(중복 생성 없이, 마지막 요청과 동일한 상태로 덮어쓰기됨).
- Idempotent: 같은
다음 그림은 example.com/posts/1
에 PUT 요청을 보내 자원을 변경하는 과정입니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
PUT 요청이 성공하면, 아래와 같이 전체 자원이 새로 업로드된 내용으로 대체됩니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
PATCH – 일부 수정해 주세요
PATCH
메서드는 자원을 부분적으로 수정할 때 사용합니다. PUT
이 전체를 덮어쓰는 방식이라면, PATCH
는 본문에 담긴 정보만 적용하여 자원의 일부만 변경합니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
이 예시에서 PUT
은 전체 자원을 새 본문으로 대체하고, PATCH
는 요청 본문에 명시된 항목만 변경합니다.
DELETE – 삭제해 주세요
DELETE
메서드는 특정 자원을 삭제하고 싶을 때 사용합니다. 예를 들어, example/texts/a.txt
를 제거하기 위해 다음 메시지를 전송할 수 있습니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
- 특징
- Idempotent: 같은
DELETE
요청을 반복하면, 첫 요청 시 자원이 제거되고, 이후엔 더 이상 해당 자원이 존재하지 않으므로 추가적인 변화가 일어나지 않습니다.
- Idempotent: 같은
서버 개발 관점에서의 HTTP 메서드
서버 개발자의 주된 고민은 “어떤 URI에 대해 어떤 메서드를 지원할 것인지, 그리고 그것을 어떻게 구현할 것인지”입니다. 동일한 URL에 대해 메서드가 다르면 전혀 다른 요청으로 간주하므로, 경우에 따라 요청 메서드별로 다른 동작을 설계할 수도 있습니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
이런 설계를 명확하게 보여 주는 문서가 API 문서입니다. 예컨대, 아래는 유튜브 관련 API 예시로, 각 URL에 어떤 메서드를 보낼 수 있고, 파라미터와 응답 구조는 어떻게 구성되는지 등이 기술되어 있습니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
아래는 네이버 뉴스 검색 API의 예시로, 요청에 필요한 메서드와 파라미터, 응답 형태가 구체적으로 표기되어 있습니다.
(출처: 혼자 공부하는 컴퓨터 네트워크)
마무리
HTTP 메서드는 단순한 요청/응답 방식을 넘어, 웹에서 자원을 어떻게 다루고 상호 작용하는지를 결정하는 중요한 요소입니다. 각 메서드의 특징(안전성, 멱등성 등)을 올바르게 이해하면, 보다 명확하고 확장성 있는 서버와 API를 구현할 수 있습니다.
'컴퓨터 네트워크 > 응용계층' 카테고리의 다른 글
HTTP 헤더 (HTTP Headers) (0) | 2025.01.12 |
---|---|
HTTP 상태 코드 (0) | 2025.01.07 |
HTTP 메시지 구조 (0) | 2025.01.04 |
HTTP의 특성 (1) | 2025.01.04 |
자원을 식별하는 URI (0) | 2025.01.04 |