HTTP 는 html과 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다.
프로토콜이란 협약, 통신, 규약 등을 의미하는데, 쉽게 말해 리소스들을 가져올 때 어떤 방식으로 필요한 리소스들을 가져올지 정하는 협약이라고 보시면 될 것 같습니다.
클라이언트와 서버간의 통신은 요청(Request)과 응답(Response)을 통해 이루어집니다.
ex)
1. 브라우저가 HTML 파일을 요청합니다. 서버는 HTML 파일을 반환합니다.
2. 브라우저가 스타일 시트를 요청합니다. 서버는 CSS 파일을 반환합니다.
3. 브라우저에서 JPG 이미지를 요청합니다. 서버는 JPG 파일을 반환합니다.
4. 브라우저가 JavaScript 파일을 요청합니다. 서버는 JavaScript 파일을 반환합니다.
5. 브라우저가 데이터를 요청합니다. 서버는 데이터(xml, json)를 반환합니다.
각각의 HTTP 통신은 비연결적인 특성으로 연결이 해제됨과 동시에 서버는 클라이언트가 이전에 요청한 결과에 대해서 잊게됩니다. 만약 클라이언트가 이전 요청과 같은 대답을 원한다 하더라도 다시 한번 동일한 요청을 보내야만 합니다.
여러 번의 통신 과정에서 연속된 데이터 처리가 필요한 경우를 위해 로그인 토큰 또는 브라우저의 쿠키, 세션, 로컬 스토리지와 같은 기술이 필요에 의해 만들어졌습니다.
HTTP는 위와 같은 특징으로 인해 'Stateless Protocol' 이라고 부르며, 각각의 통신은 독립적으로 처리됨에 따라 단순하고, 서버에 부담을 줄일 수 있습니다.
GET : 리소스를 검색하고, 반환받기 위해 사용되는 메소드로, 원하는 정보를 서버에 요청할 때 쓰입니다. 일반적으로 URL에서 쿼리를 통해 보내기 때문에 RequestBody가 없습니다.
POST : 요청된 자원을 생성하기 위한 메소드.
PUT : 요청된 자원을 수정하기 위해 사용되는 메소드
DELETE : 요청된 자원을 삭제하기 위해 사용되는 메소드
2xx (성공) : 이 클래스의 상태 코드는 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킵니다.
4xx (실패) : 이 클래스의 상태 코드는 클라이언트에 오류가 있음을 나타낸다.
5xx (서버오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.