HTTP(HyperText Transfer Protocol)는 웹 상에서 클라이언트와 서버 간에 데이터를 주고받기 위해 사용되는 프로토콜입니다. 웹 브라우저(클라이언트)가 웹 서버에 요청을 보내면, 서버는 요청에 따라 적절한 응답을 반환합니다. HTTP는 상태를 유지하지 않는(stateless) 프로토콜로, 각 요청은 독립적이며 이전 요청과 연관되지 않습니다. 이를 보완하기 위해 쿠키, 세션 등의 방법이 사용됩니다.
HTTP Method는 클라이언트가 서버에 요청을 보낼 때 사용하는 요청의 종류를 정의하는 방식입니다. 각 메소드는 특정한 작업을 지시하며, 서버는 해당 메소드에 따라 요청을 처리합니다.
설명: 서버로부터 데이터를 조회하기 위해 사용합니다. 서버의 데이터를 변경하지 않으며, 주로 리소스를 가져오거나 검색할 때 사용됩니다.
예시: 사용자의 프로필 정보를 조회하는 요청
GET /users/123 HTTP/1.1
Host: example.com
Accept: application/json
Request Parameters: GET
요청은 URL에 쿼리 스트링(Query String)으로 데이터를 전달할 수 있습니다.
예시: /users/123?include=posts
Headers: 요청 헤더를 통해 클라이언트가 수용 가능한 응답의 형식(예: application/json
)을 지정할 수 있습니다.
설명: 서버에 데이터를 제출하여 새로운 리소스를 생성하거나 특정 작업을 수행합니다. 주로 폼 데이터를 전송하거나 데이터베이스에 새로운 항목을 추가할 때 사용됩니다.
예시: 새로운 블로그 게시글을 작성하는 요청
POST /posts HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 85
{
"title": "My New Post",
"content": "This is the content of my new post.",
"author_id": 123
}
Request Body: POST
요청은 데이터를 요청 본문(Body)에 포함시켜 전송합니다. 본문은 일반적으로 JSON, XML, 또는 폼 데이터 형식으로 전송됩니다.
Headers: 요청 헤더를 통해 본문의 형식(예: application/json
)을 지정할 수 있습니다.
설명: 서버의 기존 리소스를 업데이트하거나, 리소스가 존재하지 않는 경우 새로운 리소스를 생성합니다.
예시: 사용자의 정보를 업데이트하는 요청
PUT /users/123 HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 59
{
"name": "John Doe",
"email": "john.doe@example.com"
}
Request Body: PUT
요청은 업데이트할 데이터를 요청 본문에 포함시켜 전송합니다. 전체 리소스를 교체하는 방식으로 동작합니다.
Headers: 본문 형식과 관련된 정보를 지정하기 위해 사용됩니다.
설명: 서버에서 지정된 리소스를 삭제합니다.
예시: 특정 게시글을 삭제하는 요청
DELETE /posts/456 HTTP/1.1
Host: example.com
Request Parameters: DELETE
요청은 일반적으로 URL에 리소스의 식별자를 포함시켜 삭제할 대상을 지정합니다.
Headers: 필요한 경우 인증 토큰을 포함하거나, 요청과 관련된 기타 정보를 전달할 수 있습니다.
설명: 리소스의 일부만을 수정할 때 사용합니다. PUT
과 달리 리소스의 일부분만 업데이트할 수 있습니다.
예시: 사용자의 이메일 주소만을 수정하는 요청
PATCH /users/123 HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 34
{
"email": "new.email@example.com"
}
Request Body: PATCH
요청은 변경할 데이터만을 포함하여 전송합니다.
Headers: 본문의 형식을 지정하기 위해 사용됩니다.
설명: GET
과 유사하지만, 응답 본문을 제외한 헤더 정보만 요청합니다. 주로 리소스의 존재 여부나 크기 등을 확인하기 위해 사용됩니다.
예시: 특정 리소스의 존재 여부를 확인하는 요청
HEAD /users/123 HTTP/1.1
Host: example.com
Headers: GET
요청과 동일한 방식으로 동작하지만, 응답에 본문이 포함되지 않습니다.
설명: 특정 리소스에서 사용할 수 있는 HTTP 메소드를 반환받기 위해 사용됩니다.
예시: 서버가 지원하는 메소드 확인 요청
OPTIONS /posts/456 HTTP/1.1
Host: example.com
Headers: 요청 헤더를 통해 서버에 전달될 수 있는 요청 메소드와 관련된 정보를 받을 수 있습니다.
GET
과 HEAD
메소드는 서버의 데이터에 영향을 주지 않아야 하므로 안전한 메소드입니다.PUT
, DELETE
메소드는 처음 호출과 이후 동일한 요청 호출에서 서버 상태의 변화가 동일해야 합니다.GET
메소드는 캐시가 가능하지만, POST
메소드는 기본적으로 캐시되지 않습니다.HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 보안 기능을 추가한 프로토콜입니다. HTTPS는 데이터를 암호화하여 클라이언트와 서버 간의 통신이 제3자에 의해 도청, 변조되지 않도록 보호합니다. HTTPS는 SSL(Secure Sockets Layer)이나 TLS(Transport Layer Security) 프로토콜을 사용하여 암호화를 구현합니다.
HTTPS의 주요 특징:
HTTPS는 주로 로그인 페이지, 결제 페이지와 같이 민감한 정보가 오가는 페이지에서 사용됩니다.
위 설명은 각 HTTP 메서드의 기능과 예시, 그리고 요청 파라미터와 헤더에 대한 추가 정보를 포함하여 HTTP와 HTTPS에 대한 전체적인 이해를 돕기 위한 내용입니다.