개념

[HTTP] HTTP 메서드에 대해 궁금해? 깔끔하게 정리해줄게!

junetudy 2023. 11. 8. 17:55
HTTP 메서드 (HTTP Method) 는 HTTP 프로토콜을 사용하여 서버와 클라이언트 간의 통신에 있어 수행할 작업의 종류를 나타냅니다. 

 

 

몇가지 HTTP메서드에 대해 알려드리겠습니다.

 

 

1. GET

데이터를 조회할 때 사용됩니다. 

URL에 파라미터를 포함시켜 요청을 보내고, 서버는 해당 요청에 맞는 데이터를 응답으로 보내죠. 

GET요청은 데이터를 변경하지 않아야 하는 안전한(safe) 요청으로 간주합니다. 

 

2. POST

새로운 데이터를 서버에 생성(create)할 때 사용합니다. 

예를 들면, 새 글을 작성하거나 가입 양식을 제출할 때 사용되죠. 

POST 요청은 서버의 상태나 데이터를 변경할 수 있기 때문에 안전하지 않은(non-safe) 요청으로 분류 됩니다.

 

3. PUT

3-1. 서버에 존재하는 데이터를 갱신(update)할 때 사용합니다. 

POST와 달리 PUT은 지정된 URL의 전체 데이터를 대체하죠. 

만약 지정된 URL에 데이터가 없다면 새로 생성할 수도 있습니다. 

 

4. DELETE

서버의 특정 데이터를 삭제할 때 사용합니다. 

이 메서드는 서버의 상태를 변경하기 때문에 안전하지 않은 요청입니다. 

 

5. PATCH 

*PUT과 유사한 메세드입니다. 

PATCH는 서버에 존재하는 데이터의 일부를 수정(update)하는데 사용합니다. 

 

6. HEAD

**GET과 유사하게 동작하는 메서드 입니다. 

하지만, 다른 부분이 있어요. 

서버의 응답에는 본문이 포함되지 않고, 헤어 정보만을 가져옵니다. 

주로 데이터의 메타데이터를 확인하는데 사용됩니다. 

 

7. OPTIONS

웹 서버가 지원하는 HTTP메서드를 확인할 때 사용합니다. 

이를 통해 서버가 어떤 메서드를 허용하는지 알 수 있어요. 

 

 


HTTP 메서드들은 RESTful API를 설계할 때 중요한 역할을 해요. 

각각의 메서는 특정한 목적과 의미를 가지고 있어서, HTTP 기반의 통신에서 기대되는 행위를 명확히 합니다. 

 


+ 더 알아볼까요?

어떤점이 유사한 걸까요? 


5. PATCH 

*PUT과 유사한 메세드입니다.

 

6. HEAD

**GET과 유사하게 동작하는 메서드 입니다. 


 

5. PATCH 

*PUT과 유사한 메세드입니다.

 

 

5-1. 유사점 

5-1-1. 두 메서드는 모두 서버의 자원에 대한 업데이트를 수행합니다. 

5-1-2. 두 메서드는 모두 요청 본문에 데이터를 포함시켜 서버로 전송합니다. 

 

5-2. 차이점 

5-2-1. 'PUT'은 대상 자원의 완전한 교체를 의미해요.

클라이언트는 자원의 전체 상태를 제공하고, 이 정보로 기존 자원을 완전히 대체하죠!

5-2-2. 'PATH'은 부분 업데이트를 의미해요. 

클라이언트는 변경하고자 하는 자원의 일부만을 보내고 서버는 그 일부만을 업데이트하죠!

코드로 예시를 보여줄게요.

 

 

 

코드예시 1. PUT

PUT /user/123 HTTP/1.1
Host: example.com

{
  "id": "123",
  "name": "John Doe",
  "email": "john@example.com"
}

 -> 설명 : ID 123을 가진 사용자의 전체 정보가 새로운 정보로 교체됩니다. 

 

 

코드예시 2. PATCH

PATCH /user/123 HTTP/1.1
Host: example.com

{
  "email": "johnnew@example.com"
}

-> 설명 : ID 123을 가진 사용자의 이메일 주소만 새로운 값으로 업데이트되고, 나머지 정보는 그대로 유지됩니다. 

 

예시를 통해 이해가 되셨나요?

 

 

 


 

6. HEAD

**GET과 유사하게 동작하는 메서드 입니다. 

 

'HEAD'와 'GET' 메서드는 서버로부터 정보를 가져오는 용도로 사용되지만 응답에서 반환되는 내용에도 차이가 있어요!

어떤 유사점과 차이점이 있을까요?

 

 

 

5-3. 유사점

5-3-1. 두 메서드 모두 서버의 자원에 대한 정보 요청을 위해 사용됩니다. 

5-3-2. 두 메서드는 URL을 통해 요청을 보냅니다. 

 

5-4. 차이점 

5-4-1. 'GET'은 자원의 전체 정보를 요청합니다. 서버는 헤더와 함께 자원(본문)의 내용도 응답으로 반환합니다.

5-4-2. 'HEAD'는 자원의 메타데이터만을 요청합니다. 서버는 자원의 내용(본문)을 제외한 헤더 정보만을 응답으로 반환합니다. 

코드로 예시를 보여줄게요. 

 

 

 

코드 예시 1. 'GET' 요청

GET /index.html HTTP/1.1
Host: example.com

-> 설명 : 'index.html'의 전체 내용과 헤더 정보가 반환됩니다. 

 

 

 

코드 예시 2. 'HEAD'요청

HEAD /index.html HTTP/1.1
Host: example.com

-> 설명 : 'index.html'에 대한 헤더 정보만 반환되고, 문서의 실제 내용은 반환되지 않습니다. 

이것은 문서의 존재 여부, 마지막 수정 날짜, 크기 등을 확인할때 유용해요.

 

 

코드가 동일해 보인다구요?

HTTP 예시 코드는 같아 보이지만 서버로부터 받는 응답에 있어서 중요한 차이가 있습니다. 

서버로부터 받는 응답을 보여드리겠습니다. 

 

코드 예시 1. 'GET' 요청

GET /index.html HTTP/1.1
Host: example.com

 

실제 서버로부터의 응답 내용 

'GET'요청에 대한 응답 : 

  • 상태 줄(ex. HTTP/1.1 200 OK)
  • 응답 헤어
  • 빈 줄
  • 요청된 자원의 내용(ex. HTML 문서)

 

 

 

코드 예시 2. 'HEAD'요청

HEAD /index.html HTTP/1.1
Host: example.com

 

실제 서버로부터의 응답 내용 

'HEAD'요청에 대한 응답 : 

  • 상태 줄(ex. HTTP/1.1 200 OK)
  • 응답 헤어
  • 자원의 내용은 포함되지 않음

 


'GET'요청은 요청한 자원의 내용인 HTML, 이미지, 데이터 등)과 헤더를 모두 받습니다. 

'HEAD'요청은 요청한 자원의 내용을 받지 않고, 헤더 정보만 받습니다. 

이 헤어 정보에는 자원의 타입, 길이, 마지막 수정 날짜 등이 포함되어 있습니다. 

즉, 'HEAD'는 문서 내용은 다운로드 되지 않고, 문서의 존재 와 속성을 확인하는데 사용됩니다. 

 

 

정리하자면, 

'GET' 요청에 대해서는 HTML 문서나 이미지 파일 등의 본문 데이터가 응답에 포함된다. 

'HEAD' 요청에 대해서는 본문 데이터 없이 헤더 정보만 포함되어 있다. 

 

 

 

 

 

 

 

* 피드백은 언제든지 환영입니다 :)

'개념' 카테고리의 다른 글

프로토콜(Protocol) 대체 뭐야?  (0) 2023.11.08
HTTP 와 HTTPS의 차이점  (4) 2023.11.08
[API] REST API ?  (2) 2023.11.06
[Data] RDBMS 가 뭐야? 간단하게 설명해줄게  (2) 2023.11.06
[Data] Redis 와 RDS 차이점이 궁금해?  (4) 2023.11.06