HTTP 그리고 HTTP Methods
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
- 데이터를 조회 할 때 사용 - Read
- 요청하는 데이터는 URL의 쿼리 매개변수나 경로로 전달
- GET 요청은 캐싱이 가능하며, 요청과 응답이 URL에 노출
https://example.com/resource?idx=1
- POST
- 데이터를 생성 할 때 사용 - Create
- body를 통해 서버로 데이터를 전달
- 캐싱 가능
- PUT
- 데이터를 업데이트 할 때 사용 - Update
- 기존 데이터가 존재하는 경우 전송한 데이터로 대체하고, 데이터가 존재하지 않는 경우 데이터를 새로 생성한다.
- 캐싱 불가능
https://example.com/update_user/1
- DELETE
- 데이터를 삭제 할 때 사용 - Delete
- 요청 본문이 필요 없으며 리소스 식별자가 URL에 포함
- 캐싱 불가능
https://example.com/delete_user/1
- PATCH
- 리소스의 일부를 수정 할 때 사용
- 요청 본문에 수정할 데이터를 포함하여 전송
- 캐싱 가능
- HEAD
- GET과 유사하지만 응답 본문을 제외하고 헤더 정보만 요청 할 때 사용
- 캐싱 가능
- TRACE
- 일종의 검사용 메소드로 요청을 반복하여 서버와의 통신 경로를 확인하는 데 사용
- 캐싱 불가능
- OPTION
- 일종의 검사용 메소드로 CORS 정책을 검사 할 때 주로 사용
- 캐싱 부가능
* GET과 POST의 내부로직 차이점에 대해서는 추후에 업데이트 예정