REST over HTTP

거의 모든 REST 에 대한 활용은 HTTP Protocol 을 기반으로 한다. CRUD 작업을 수행하기 위하여 HTTP 의 다음 HTTP Method 들을 활용한다.

HTTP 메서드설명
POSTCreate a new entity
GETRead a list of entities or single entity
PUTUpdate an existing entity
PATCHPartially update an existing entity
DELETEDelete an existing entity
HTTP Messages

Client 와 Server 간의 데이터 교환을 위하여 HTTP Message 를 사용한다.

Cient 인 CRM(Customer Relationship Management) App 이 HTTP Request Message 를 통하여 요청하면, CRM REST Service 인 Server 는 이에 해당하는 HTTP Response Message 를 통하여 응답한다.

HTTP Request Message

우선 Request Message 의 구조부터 살펴보자.

Request Line 은 HTTP Method 를 포함한 HTTP command 를 define 한다. 즉, request 의 목적을 define 하는 것이다.

Header Variables 에서는 request 에 대한 metadata, 즉 부가 정보를 포함하고 있다.

Message Body 에는 request data 가 포함된다. JSON 형식으로 이루어져 있다.

HTTP Response Message

이번에는 HTTP Response Message 에 대하여 살펴보자.

Response Line 은 server protocol 과 200, 404, 503 등과 같은 status code 를 포함한다. Status Code 에 대한 내용은 아래와 같다.

상태 코드분류설명
1xxInformational요청을 수신했으며 처리가 진행 중임을 나타냄
2xxSuccessful요청이 성공적으로 처리됨
3xxRedirection요청 완료를 위해 추가 작업이 필요함
4xxClient Error클라이언트의 요청에 문제가 있어 처리할 수 없음
5xxServer Error서버가 유효한 요청을 처리하지 못함

Header Variables 는 response 에 대한 metadata 를 포함한다. Content Type, Content Length 등의 정보를 포함한다.

Message Body 에서는 request 에 대한 실제 data(HTML, JSON, XML 등)를 포함한다.

MIME Content Types

MIME(Multipurpose Internet Mail-Extenstion) 은 인터넷에서 전송되는 데이터의 형식을 나타내는 표준 방식으로, Client(브라우저) 와 Server 가 데이터를 처리하는 방식을 결정한다. HTTP 통신에서 주로 Content-Type header 에 사용되며, 데이터의 type 과 subtype 을 명시한다.

기본적인 syntax 는 type/sub-type 으로 사용하며, text/html, text/plain 등의 방식으로 사용한다.

typesubtype설명
textplainhtmlcss텍스트 데이터 (예: 일반 텍스트, HTML 문서)
imagejpegpnggif이미지 파일
audiompegwavwebm오디오 파일
videomp4webmogg비디오 파일
applicationjsonpdfzip바이너리 데이터 또는 특정 애플리케이션 파일
multipartform-datamixed여러 파일 또는 데이터 조각을 함께 전송

MIME Types 는 Server 와 Client 간의 데이터 교환에서 데이터의 형식을 명확히 지정하기 때문에, 브라우저가 데이터를 처리하거나 다운로드할 때 해당 데이터를 올바르게 해석하고 처리할 수 있도록 돕는다.

Client Tool

Client 의 HTTP request 와 Server 의 HTTP response 를 test 하기 위하여 단순히 browser 를 사용할 수 있지만, Postman, curl 등의 Client Tool 을 이용할 수 있다.