REST : ์น (HTTP) ์ ์ฅ์ ์ ํ์ฉํ ์ํคํ ์ณ
-
REST์ ์์
-
Method
Method ์๋ฏธ Idempotent POST Create No GET Select Yes PUT Update Yes DELETE Delete Yes Idempotent : ํ ๋ฒ ์ํํ๋, ์ฌ๋ฌ ๋ฒ ์ํํ์ ๋ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋?
-
Resource
- http://myweb/users์ ๊ฐ์ URI
- ๋ชจ๋ ๊ฒ์ Resource (๋ช ์ฌ)๋ก ํํํ๊ณ , ์ธ๋ถ Resource์๋ id๋ฅผ ๋ถ์
-
Message
-
๋ฉ์์ง ํฌ๋งท์ด ์กด์ฌ
: JSON, XML ๊ณผ ๊ฐ์ ํํ๊ฐ ์์ (์ต๊ทผ์๋ JSON ์ ์)
HTTP POST, http://myweb/users/ { "users" : { "name" : "terry" } }
-
-
-
REST ํน์ง
-
Uniform Interface
-
HTTP ํ์ค๋ง ๋ง๋๋ค๋ฉด, ์ด๋ค ๊ธฐ์ ๋ ๊ฐ๋ฅํ Interface ์คํ์ผ
์) REST API ์ ์๋ฅผ HTTP + JSON๋ก ํ์๋ค๋ฉด, C, Java, Python, IOS ํ๋ซํผ ๋ฑ ํน์ ์ธ์ด๋ ๊ธฐ์ ์ ์ข ์ ๋ฐ์ง ์๊ณ , ๋ชจ๋ ํ๋ซํผ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ Loosely Coupling ๊ตฌ์กฐ
-
ํฌํจ
-
Self-Descriptive Messages
- API ๋ฉ์์ง๋ง ๋ณด๊ณ , API๋ฅผ ์ดํดํ ์ ์๋ ๊ตฌ์กฐ (Resource, Method๋ฅผ ์ด์ฉํด ๋ฌด์จ ํ์๋ฅผ ํ๋์ง ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์์)
-
HATEOAS(Hypermedia As The Engine Of Application State)
- Application์ ์ํ(State)๋ Hyperlink๋ฅผ ํตํด ์ ์ด๋์ด์ผ ํจ.
- ์๋ฒ๋ ํ์ฌ ์ด์ฉ ๊ฐ๋ฅํ ๋ค๋ฅธ ์์ ์ ๋ํ ํ์ดํผ๋งํฌ๋ฅผ ํฌํจํ์ฌ ์๋ตํด์ผ ํจ.
-
Resource Identification In Requests
-
Resource Manipulation Through Representations
-
-
-
Statelessness
-
์ฆ, HTTP Session๊ณผ ๊ฐ์ ์ปจํ ์คํธ ์ ์ฅ์์ ์ํ ์ ๋ณด ์ ์ฅ ์ํจ
-
**Request๋ง Message๋ก ์ฒ๋ฆฌ**ํ๋ฉด ๋๊ณ , ์ปจํ ์คํธ ์ ๋ณด๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ฏ๋ก, ๊ตฌํ์ด ๋จ์ํด์ง.
-
๋ฐ๋ผ์, REST API ์คํ์ค ์คํจ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, Transaction ๋ณต๊ตฌ๋ฅผ ์ํด ๊ธฐ์กด์ ์ํ๋ฅผ ์ ์ฅํ ํ์๊ฐ ์๋ค. (POST Method ์ ์ธ)
-
-
Resource ์งํฅ ์ํคํ ์ณ (ROA : Resource Oriented Architecture)
- Resource ๊ธฐ๋ฐ์ ๋ณต์ํ ๋ช ์ฌ ํํ์ ์ ์๋ฅผ ๊ถ์ฅ.
-
Client-Server Architecture
-
Cache Ability
-
Layered System
-
Code On Demand(Optional)
-