REST over HTTP
거의 모든 REST 에 대한 활용은 HTTP Protocol 을 기반으로 한다. CRUD 작업을 수행하기 위하여 HTTP 의 다음 HTTP Method 들을 활용한다.
| HTTP 메서드 | 설명 |
|---|---|
| POST | Create a new entity |
| GET | Read a list of entities or single entity |
| PUT | Update an existing entity |
| PATCH | Partially update an existing entity |
| DELETE | Delete 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 에 대한 내용은 아래와 같다.
| 상태 코드 | 분류 | 설명 |
|---|---|---|
| 1xx | Informational | 요청을 수신했으며 처리가 진행 중임을 나타냄 |
| 2xx | Successful | 요청이 성공적으로 처리됨 |
| 3xx | Redirection | 요청 완료를 위해 추가 작업이 필요함 |
| 4xx | Client Error | 클라이언트의 요청에 문제가 있어 처리할 수 없음 |
| 5xx | Server 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 등의 방식으로 사용한다.
| type | subtype | 설명 |
|---|---|---|
| text | plain, html, css | 텍스트 데이터 (예: 일반 텍스트, HTML 문서) |
| image | jpeg, png, gif | 이미지 파일 |
| audio | mpeg, wav, webm | 오디오 파일 |
| video | mp4, webm, ogg | 비디오 파일 |
| application | json, pdf, zip | 바이너리 데이터 또는 특정 애플리케이션 파일 |
| multipart | form-data, mixed | 여러 파일 또는 데이터 조각을 함께 전송 |
MIME Types 는 Server 와 Client 간의 데이터 교환에서 데이터의 형식을 명확히 지정하기 때문에, 브라우저가 데이터를 처리하거나 다운로드할 때 해당 데이터를 올바르게 해석하고 처리할 수 있도록 돕는다.
Client Tool
Client 의 HTTP request 와 Server 의 HTTP response 를 test 하기 위하여 단순히 browser 를 사용할 수 있지만, Postman, curl 등의 Client Tool 을 이용할 수 있다.