웹에서 데이터를 주고받기 위한 표준 프로토콜입니다. 이 프로토콜은 웹 브라우저(클라이언트)와 웹 서버 간의 통신을 가능하게 함
상태(State): 네트워크 통신에서 '상태'란 클라이언트와 서버 간의 상호작용에서 각 단계에서의 정보를 의미합니다. 예를 들어, 사용자가 로그인을 하면, 서버는 사용자가 로그인했다는 상태 정보를 가지고 있어야 합니다.
세션(Session): 세션은 클라이언트와 서버 간에 지속되는 상호작용을 의미합니다. 예를 들어, 사용자가 웹사이트에 로그인하면, 그 사용자의 로그인 상태를 유지하는 것이 세션입니다.
무상태 프로토콜에서는 서버가 이러한 상태나 세션 정보를 저장하지 않습니다. 즉, 클라이언트가 서버에 요청을 보낼 때마다, 서버는 그 요청을 완전히 새로운 요청으로 간주하고, 이전에 같은 클라이언트로부터 받았던 요청들과의 연관성을 고려하지 않습니다. 각 요청은 독립적으로 처리되며, 요청이 끝나면 해당 요청에 대한 정보는 서버에서 사라집니다.
이러한 방식은 서버가 사용자의 상태 정보를 계속 추적할 필요가 없어 구현이 단순해지고 확장성이 높아지는 장점이 있습니다. 그러나 상태 정보를 유지해야 하는 경우(예: 온라인 쇼핑 카트, 로그인 세션 유지)에는 쿠키, 세션 변수 등의 추가적인 메커니즘을 사용하여 이를 처리해야 합니다.
GET
: 리소스를 조회할 때 사용합니다.POST
: 새로운 리소스를 생성할 때 사용합니다.PUT
: 리소스를 업데이트할 때 사용합니다.DELETE
: 리소스를 삭제할 때 사용합니다.HEAD
, OPTIONS
, PATCH
등)도 존재합니다.200 OK
는 성공, 404 Not Found
는 요청한 리소스를 찾을 수 없음, 500 Internal Server Error
는 서버 내부 오류 등.Request(요청)
Response(응답)
클라이언트의 요청(Request)
HTTP 메서드 사용: 클라이언트는 HTTP 메서드 (예: GET, POST, PUT, DELETE)를 사용하여 서버에 요청을 보냅니다. 각 메서드는 다른 유형의 작업을 나타냅니다 (예: GET은 데이터 조회, POST는 데이터 생성).
URI 사용: 요청은 Uniform Resource Identifier(URI)를 사용하여 특정 리소스를 지정합니다. 예를 들어, http://example.com/api/users는 사용자 목록을 나타낼 수 있습니다.
요청 본문: POST나 PUT과 같은 메서드에서는 요청 본문에 데이터를 포함시킬 수 있습니다. 데이터 형식은 주로 JSON 또는 XML을 사용합니다.
서버의 처리
리소스 식별: 서버는 요청된 URI를 분석하여 어떤 리소스에 대한 요청인지 식별합니다.
작업 실행: 서버는 HTTP 메서드에 따라 적절한 작업(데이터 조회, 수정, 삭제 등)을 수행합니다.
데이터베이스 상호작용: 필요한 경우, 서버는 데이터베이스와 상호작용하여 요청에 필요한 데이터를 검색, 저장, 수정 또는 삭제합니다.
서버의 응답(Response)
HTTP 상태 코드: 서버는 요청 처리 결과를 나타내는 HTTP 상태 코드를 응답에 포함합니다 (예: 200 OK, 404 Not Found).
응답 본문: 서버는 처리 결과에 따라 응답 본문에 데이터를 포함시킵니다. 이 데이터도 주로 JSON 또는 XML 형식입니다.
헤더 정보: 응답에는 Content-Type, 캐싱 정책 등과 같은 추가 정보를 포함하는 HTTP 헤더가 포함될 수 있습니다.
Request Message