기타

HTTP 그리고 HTTP Methods

whooooo 2023. 11. 7. 00:27

HTTP (HyperText Transfer Protocol)

: 웹 브라우저와 웹 서버 간의  데이터(리소스)를 교환할 수 있게 하는 프로토콜(규칙)이다.

 

HTTP의 특징

  • TCP/ IP를 이용하는 응용 프로토콜이다. 
  • HTTP는 각 요청이 독립적이며 연결 상태를 유지하지 않는 무상태성 프로토콜이다. 
  • HTTP 메시지는 주로 텍스트 기반으로 구성되고, 사람이 읽을 수 있는 형식을 가지고 있다. 
  • HTTPS(HTTP Secure)를 통해 HTTP 통신을 암호화하여 데이터의 기밀성과 무결성을 보호할 수 있다. 
  • HTTP는 클라이언트-서버 모델을 기반으로 동작하며 클라이언트가 서버에 요청을 보내고, 서버는 응답을 반환한다. 

HTTP의 구조  

: HTTP는 기본적으로 클라이언트와 서버 간의 요청과 응답 메시지로 구성되며, 각각의 메시지는 특정 구조를 따른다. 


1. 요청 (Request)

- Request Line

: HTTP 요청 메시지의 첫번째 줄로 HTTP Method, 요청 대상 URL, HTTP 버전 정보로 이루어져 있다. 

GET /free HTTP/1.1

 

- Request Headers

: 요청에 대한 추가 정보를 담고 있는 부분으로 클라이언트의 정보, 인증 정보, 캐시 관련 정보 등이 포함되어 있다.

// key:value 형식
GET /api/free HTTP/1.1
Host: www.freedomExample.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Accept: application/json
Authorization: ***auth***

 

- Request Body

: 요청 메시지와 함께 데이터를 전송하는데 사용 되며 데이터는 클라이언트에서 서버로 전달된다. 


2. 응답 (Response)

- Status Line

: 요청의 응답 결과와 상태를 나타내며 HTTP 버전 정보, 상태 코드, 상태 메시지로 이루어져 있다. 

HTTP/1.1 200 OK

 

- Request Headers

: 응답에 대한 추가 정보를 담고 있는 부분으로 응답의 길이, 콘텐츠 유형, 서버 정보 정보 등이 포함되어 있다. 

Content-Type: application/json
Cache-Control: max-age=3600
Server: Apache

 

- Request Body

: 클라이언트로 반환된 내용으로 API의 경우 JSON형식으로 리턴된다. 

 


 

HTTP Method

: 클라이언트가 서버에게 원하는 동작을 알리는 방법으로, RESTful API를 구현하거나 웹 애플리케이션을 개발하는 데 중요한 역할을 한다. 

요청하는 메소드의 타입은 해당 기능의 목적에 맞게 선택되어야 한다. 

 

HTTP Method 종류

(실무에서 자주 사용되는 메소드명은 bold 처리 )

- GET

  1. 데이터를 조회 할 때 사용 - Read
  2. 요청하는 데이터는 URL의 쿼리 매개변수나 경로로 전달
  3. GET 요청은 캐싱이 가능하며, 요청과 응답이 URL에 노출
https://example.com/resource?idx=1

 

- POST 

  1. 데이터를 생성 할 때 사용 - Create
  2. body를 통해 서버로 데이터를 전달
  3. 캐싱 가능

- PUT

  1. 데이터를 업데이트 할 때 사용 - Update
  2. 기존 데이터가 존재하는 경우 전송한 데이터로 대체하고, 데이터가 존재하지 않는 경우 데이터를 새로 생성한다. 
  3. 캐싱 불가능
https://example.com/update_user/1

 

- DELETE

  1. 데이터를 삭제 할 때 사용 - Delete
  2. 요청 본문이 필요 없으며 리소스 식별자가 URL에 포함
  3. 캐싱 불가능
https://example.com/delete_user/1

 

- PATCH

  1. 리소스의 일부를 수정 할 때 사용
  2. 요청 본문에 수정할 데이터를 포함하여 전송 
  3. 캐싱 가능

- HEAD

  1. GET과 유사하지만 응답 본문을 제외하고 헤더 정보만 요청 할 때 사용 
  2. 캐싱 가능

 

- TRACE

  1. 일종의 검사용 메소드로 요청을 반복하여 서버와의 통신 경로를 확인하는 데 사용
  2. 캐싱 불가능

 

- OPTION

  1. 일종의 검사용 메소드로 CORS 정책을 검사 할 때 주로 사용
  2. 캐싱 부가능

 

 


 

* GET과 POST의 내부로직 차이점에 대해서는 추후에 업데이트 예정