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μ„€λͺ…
textplain,Β html,Β cssν…μŠ€νŠΈ 데이터 (예: 일반 ν…μŠ€νŠΈ, HTML λ¬Έμ„œ)
imagejpeg,Β png,Β gif이미지 파일
audiompeg,Β wav,Β webmμ˜€λ””μ˜€ 파일
videomp4,Β webm,Β oggλΉ„λ””μ˜€ 파일
applicationjson,Β pdf,Β zipλ°”μ΄λ„ˆλ¦¬ 데이터 λ˜λŠ” νŠΉμ • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 파일
multipartform-data,Β mixedμ—¬λŸ¬ 파일 λ˜λŠ” 데이터 쑰각을 ν•¨κ»˜ 전솑

MIME Types λŠ” Server 와 Client κ°„μ˜ 데이터 κ΅ν™˜μ—μ„œ λ°μ΄ν„°μ˜ ν˜•μ‹μ„ λͺ…ν™•νžˆ μ§€μ •ν•˜κΈ° λ•Œλ¬Έμ—, λΈŒλΌμš°μ €κ°€ 데이터λ₯Ό μ²˜λ¦¬ν•˜κ±°λ‚˜ λ‹€μš΄λ‘œλ“œν•  λ•Œ ν•΄λ‹Ή 데이터λ₯Ό μ˜¬λ°”λ₯΄κ²Œ ν•΄μ„ν•˜κ³  μ²˜λ¦¬ν•  수 μžˆλ„λ‘ λ•λŠ”λ‹€.

Client Tool

Client 의 HTTP request 와 Server 의 HTTP response λ₯Ό test ν•˜κΈ° μœ„ν•˜μ—¬ λ‹¨μˆœνžˆ browser λ₯Ό μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, Postman, curl λ“±μ˜ Client Tool 을 μ΄μš©ν•  수 μžˆλ‹€.