New Score :0
High Score :0
Run Best
NICE BUSINESS TYPE INDICATOR
3. ๊ธ์ ์ ์น๊ตฌ์๊ฒ ๋น๋ ธ๋๋ฐ ์ค๋์ด ๋์ ์ฃผ๊ธฐ๋ก ํ๋ .. ๊ทธ๋ฐ๋ฐ ์นด๋๊ฐ์ ๋ด์ผํ๋ ๋ ๋ ์ค๋์ธ๋ฐ... ์ด๊ฑธ ์ด์ฉ๋...
4. ์ฐ๋ฆฌ ํ์ฌ๋ ์ค์ํ ์์ฌ ๊ฒฐ์ ์ ํ ๋?
5. ์ด์ฌํ ์ผํ ๋๋ฅผ ์ํ ์ ๋ฌผ์ ์ฃผ๊ณ ์ถ๋ค. ์ด๋ค๊ฒ ์ข์๊น?
6. ์ํ์์ ํฌ์์ํ์ ์ถ์ฒ๋ฐ์๋ค. ์ด๋ค๊ฑธ ๊ฐ์ ํ์ง?
7. ํ์ฌ์์์ ๋๋?
8. ๊ฟ์์ ๊นจ์ด๋๋ 20๋ ์ ์ผ๋ก ๋์๊ฐ๋ค. ๋น์ ์ด ์ ์ผ ๋จผ์ ํ๋์ผ์?
9. ๋ด๊ฐ ์ธ์ฌ ๋ด๋น์๋ผ๋ฉด ์ ๊ท ์ ์ฌ์ ์ฑ์ฉ ์ ์ ์ผ ์ค์ํ๊ฒ ๋ณด๋๊ฒ์?
10. ํ์ฌ์ ์ ๋ง ์ซ์ดํ๋ ๋๋ฃ๊ฐ ์๋ค๋ฉด?
11. ๊ฐ๋ํ ์ง์ ๊ฐ์ฅ์ด ๋์๋ค.. ์๋ ์ ์์ผ ๋ ์ ๋ฌผ์?
12. ํ์ ํ์ฌ ์ถ๊ทผ ์คํ์ผ์?
13.ํ์ฌ ์ฒด์ก๋ํ ํ๋ ๋ ์ด๋ค. ์ค๋ ๋ญํ์ง?
14. ๋์ ์ ๋ฌด ์คํ์ผ์?
REST๋ ์ฝ์ด์ ๋๋ค.
for REpresentational State Transfer and an architectural style for distributed hypermedia systems.
๋ก์ด ํ๋ฉ (Roy Fielding)์ 2000 ๋ ๊ทธ์ ์ ๋ช ํ ๋ ผ๋ฌธ์์ ์ฒ์์ผ๋ก ๊ทธ๊ฒ์ ๋ฐํํ์ต๋๋ค.
๋ค๋ฅธ ์ํคํ ์ฒ ์คํ์ผ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก REST์๋ ๊ธฐ๋ณธ ์์น๊ณผ ์ ์ฝ ์กฐ๊ฑด์ด ์์ต๋๋ค. ์๋น์ค ์ธํฐํ์ด์ค๋ฅผ RESTful์ด๋ผ๊ณ ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์์น์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค.
A Web API (or Web Service) conforming to the REST architectural style is a REST API.
1. Guiding Principles of REST
RESTful ์ํคํ ์ฒ์ 6๊ฐ์ง ๊ธฐ๋ณธ ์์น ๋๋ ์ ์ฝ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1.1. Uniform Interface
๊ตฌ์ฑ ์์ ์ธํฐํ์ด์ค์ ์ผ๋ฐ์ฑ ์์น์ ์ ์ฉํจ์ผ๋ก์จ ์ ์ฒด ์์คํ ์ํคํ ์ฒ๋ฅผ ๋จ์ํํ๊ณ ์ํธ ์์ฉ์ ๊ฐ์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ฌ๋ฌ ์ํคํ ์ฒ ์ ์ฝ ์กฐ๊ฑด์ ๊ท ์ผํ ์ธํฐํ์ด์ค๋ฅผ ์ป๊ณ ๊ตฌ์ฑ ์์์ ๋์์ ์๋ดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ค์ ๋ค ๊ฐ์ง ์ ์ฝ ์กฐ๊ฑด์ ๊ท ์ผํ REST ์ธํฐํ์ด์ค๋ฅผ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
- Identification of resources – ์ธํฐํ์ด์ค๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ํธ ์์ฉ๊ณผ ๊ด๋ จ๋ ๊ฐ ๋ฆฌ์์ค๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํด์ผ ํฉ๋๋ค.
- Manipulation of resources through representations – ๋ฆฌ์์ค๋ ์๋ฒ ์๋ต์์ ๊ท ์ผํ ํํ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค. API ์๋น์๋ ์ด๋ฌํ ํํ์ ์ฌ์ฉํ์ฌ ์๋ฒ์ ๋ฆฌ์์ค ์ํ๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
- Self-descriptive messages – ๊ฐ ๋ฆฌ์์ค ํํ์ ๋ฉ์์ง ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ธฐ์ ์ถฉ๋ถํ ์ ๋ณด๋ฅผ ์ ๋ฌํด์ผ ํฉ๋๋ค. ๋ํ ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค์ ๋ํด ์ํํ ์ ์๋ ์ถ๊ฐ ์์ ์ ๋ํ ์ ๋ณด๋ ์ ๊ณตํด์ผ ํฉ๋๋ค.
- Hypermedia as the engine of application state – ํด๋ผ์ด์ธํธ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ด๊ธฐ URI๋ง ์์ด์ผ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ดํผ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋ชจ๋ ๋ฆฌ์์ค์ ์ํธ ์์ฉ์ ๋์ ์ผ๋ก ๊ตฌ๋ํด์ผ ํฉ๋๋ค.
1.2. Client-Server
ํด๋ผ์ด์ธํธ-์๋ฒ ๋์์ธ ํจํด์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ตฌ์ฑ ์์๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ์ ํ๋ ๋ฐ ๋์์ด ๋๋ ๋ฌธ์ ๋ถ๋ฆฌ๋ฅผ ์ ์ฉํฉ๋๋ค.
์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋ฌธ์ (ํด๋ผ์ด์ธํธ)์ ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ๋ฌธ์ (์๋ฒ)๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฌ๋ฌ ํ๋ซํผ์์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์ด์์ฑ์ ๊ฐ์ ํ๊ณ ์๋ฒ ๊ตฌ์ฑ ์์๋ฅผ ๋จ์ํํ์ฌ ํ์ฅ์ฑ์ ๊ฐ์ ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์งํํ๋ ๋์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ธํฐํ์ด์ค / ๊ณ์ฝ์ด ๊นจ์ง์ง ์๋๋กํด์ผํฉ๋๋ค.
1.3. Stateless
์ํ ๋น์ ์ฅ์ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก์ ๊ฐ ์์ฒญ์ ์์ฒญ์ ์ดํดํ๊ณ ์๋ฃํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ํฌํจํด์ผ ํ๋ค๊ณ ์๊ตฌํฉ๋๋ค.
์๋ฒ๋ ์ด์ ์ ์๋ฒ์ ์ ์ฅ๋ ์ปจํ ์คํธ ์ ๋ณด๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ด์ ๋ก ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ธ์ ์ํ๋ฅผ ์์ ํ ์ ์งํด์ผ ํฉ๋๋ค.
1.4. Cacheable
์บ์ ๊ฐ๋ฅ ์ ์ฝ ์กฐ๊ฑด์ ์ฌ์ฉํ๋ ค๋ฉด ์๋ต์ด ์์์ ๋๋ ๋ช ์์ ์ผ๋ก ์์ ์ ์บ์ ๊ฐ๋ฅ ๋๋ ์บ์ ๋ถ๊ฐ๋ฅ์ผ๋ก ๋ ์ด๋ธ์ ์ง์ ํด์ผ ํฉ๋๋ค.
์๋ต์ ์บ์ํ ์ ์๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋์ค์ ๋๋ฑํ ์์ฒญ ๋ฐ ์ง์ ๋ ๊ธฐ๊ฐ์ ๋ํด ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฌ์ฉํ ์ ์๋ ๊ถํ์ ์ป์ต๋๋ค.
1.5. Layered System
๊ณ์ธตํ๋ ์์คํ ์คํ์ผ์ ์ฌ์ฉํ๋ฉด ๊ตฌ์ฑ ์์ ๋์์ ์ ํํ์ฌ ์ํคํ ์ฒ๋ฅผ ๊ณ์ธต์ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๊ณ์ธตํ๋ ์์คํ ์์ ๊ฐ ๊ตฌ์ฑ ์์๋ ์ํธ ์์ฉํ๋ ๋ฐ๋ก ๊ณ์ธต ๋๋จธ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
1.6. Code on Demand (Optional)
๋ํ REST๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฟ ๋๋ ์คํฌ๋ฆฝํธ ํํ๋ก ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์คํํ์ฌ ํด๋ผ์ด์ธํธ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์์ต๋๋ค.
๋ค์ด๋ก๋ํ ์ฝ๋๋ ์ฌ์ ๊ตฌํ์ ํ์ํ ๊ธฐ๋ฅ ์๋ฅผ ์ค์ฌ ํด๋ผ์ด์ธํธ๋ฅผ ๋จ์ํํฉ๋๋ค. ์๋ฒ๋ ์ฝ๋ ํํ๋ก ํด๋ผ์ด์ธํธ์ ์ ๋ฌ๋๋ ๊ธฐ๋ฅ์ ์ผ๋ถ๋ฅผ ์ ๊ณตํ ์ ์์ผ๋ฉฐ ํด๋ผ์ด์ธํธ๋ ์ฝ๋๋ฅผ ์คํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
2. What is a Resource?
REST์์ ์ ๋ณด์ ์ฃผ์ ์ถ์ํ๋ ๋ฆฌ์์ค์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ด๋ฆ์ ์ง์ ์์๋ ๋ชจ๋ ์ ๋ณด๋ ์์์ด ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, REST ์์์ ๋ฌธ์ ๋๋ ์ด๋ฏธ์ง, ์์ ์๋น์ค, ๋ค๋ฅธ ์์๋ค์ ์ฝ๋ ์ , ๋๋ ๋น-๊ฐ์ ๊ฐ์ฒด(์๋ฅผ ๋ค์ด, ์ฌ๋)์ผ ์ ์๋ค.
ํน์ ์๊ฐ์ ์์์ ์ํ๋ฅผ ์์ ํํ์ด๋ผ๊ณ ํฉ๋๋ค.
์์ ํํ์ ๋ค์์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- the data
- the metadata describing the data
- and the hypermedia links that can help the clients in transition to the next desired state.
REST API๋ ์ํธ ์ฐ๊ฒฐ๋ ๋ฆฌ์์ค์ ์ด์ ๋ธ๋ฆฌ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด ๋ฆฌ์์ค ์งํฉ์ REST API์ ๋ฆฌ์์ค ๋ชจ๋ธ์ด๋ผ๊ณ ํฉ๋๋ค.
2.1. Resource Identifiers
REST๋ ์์ ์๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ปดํฌ๋ํธ ๊ฐ์ ์ํธ์์ฉ์ ๊ด๋ จ๋ ๊ฐ ์์์ ์๋ณํฉ๋๋ค.
2.2. Hypermedia
ํํ์ ๋ฐ์ดํฐ ํ์์ ๋ฏธ๋์ด ์ ํ์ด๋ผ๊ณ ํฉ๋๋ค. ๋งค์ฒด ์ ํ์ ํํ์ด ์ฒ๋ฆฌ๋๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ์คํ์ ์๋ณํฉ๋๋ค.
RESTful API๋ ํ์ดํผ ํ ์คํธ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ ๋ณด์ ๋ชจ๋ ์ด๋๋ ์ค ๊ฐ๋ฅ ์ ๋์ ๋ช ์์ ์ผ๋ก(์๋ฅผ ๋ค์ด, ๋งํฌ ๋ฐ id ์์ฑ๋ค) ๋๋ ์์์ ์ผ๋ก(์๋ฅผ ๋ค์ด, ๋ฏธ๋์ด ์ ํ ์ ์ ๋ฐ ํํ ๊ตฌ์กฐ๋ก๋ถํฐ ํ์๋) ์ด๋๋ ์ค๋ฅผ ์ ๋ฌํ๋ค.
ํ์ดํผ ํ ์คํธ (๋๋ ํ์ดํผ ๋ฏธ๋์ด)๋ ์ ๋ณด๊ฐ ์ฌ์ฉ์ (๋๋ ์คํ ๋งํค)๊ฐ ์ ํ์ ์ป๊ณ ์์ ์ ์ ํํ๋ ์ดํฌ๋์ค๊ฐ๋๋๋ก ์ ๋ณด์ ์ ์ด์ ๋์ ํ์๋ฅผ ์๋ฏธํฉ๋๋ค.
ํ์ดํผํ ์คํธ๋ ๋ธ๋ผ์ฐ์ ์์ HTML(๋๋ XML ๋๋ JSON)์ผ ํ์๋ ์์ต๋๋ค. ๊ธฐ๊ณ๋ ๋ฐ์ดํฐ ํ์๊ณผ ๊ด๊ณ ์ ํ์ ์ดํดํ ๋ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ ์ ์์ต๋๋ค.
— Roy Fielding
2.3. Self-Descriptive
๋ํ, ์์ ํํ์ ์๊ธฐ ์ค๋ช ์ ์ด์ด์ผ ํ๋ค: ํด๋ผ์ด์ธํธ๋ ์์์ด ์ง์์ธ์ง ์ฅ์น์ธ์ง ์ ํ์๊ฐ ์๋ค. ๋ฆฌ์์ค์ ์ฐ๊ฒฐ๋ ๋ฏธ๋์ด ์ ํ์ ๋ฐ๋ผ ์๋ํด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ์ค์ ๋ก๋ ๋ง์ ์ฌ์ฉ์ ์ง์ ๋ฏธ๋์ด ์ ํ(์ผ๋ฐ์ ์ผ๋ก ํ๋์ ๋ฆฌ์์ค์ ์ฐ๊ฒฐ๋ ํ๋์ ๋ฏธ๋์ด ์ ํ)์ ๋ง๋ญ๋๋ค.
๋ชจ๋ ๋ฏธ๋์ด ์ ํ์ ๊ธฐ๋ณธ ์ฒ๋ฆฌ ๋ชจ๋ธ์ ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด HTML์ ํ์ดํผํ ์คํธ์ ๋ํ ๋ ๋๋ง ํ๋ก์ธ์ค์ ๊ฐ ์์ ์ฃผ๋ณ์ ๋ธ๋ผ์ฐ์ ๋์์ ์ ์ํฉ๋๋ค.
๋ฏธ๋์ด ์ ํ์ ๋ฆฌ์์ค ๋ฉ์๋ GET / PUT / POST / DELETE / ... ์ผ๋ถ ๋ฏธ๋์ด ์ ํ ์์๋ "href ์์ฑ์ด์๋ ์ต์ปค ์์๋ ์ ํ์ CDATA๋ก ์ธ์ฝ๋ฉ ๋ href ์์ฑ์ ํด๋นํ๋ URI์์ ๊ฒ์ ์์ฒญ (GET)์ ํธ์ถํ๋ ํ์ดํผ ํ ์คํธ ๋งํฌ๋ฅผ ๋ง๋ญ๋๋ค."
3. Resource Methods
REST์ ๊ด๋ จ๋ ๋ ๋ค๋ฅธ ์ค์ํ ๊ฒ์ ๋ฆฌ์์ค ๋ฉ์๋์ ๋๋ค. ์ด๋ฌํ ์์ ๋ฉ์๋๋ ์์์ ๋ ์ํ ์ฌ์ด์์ ์ํ๋ ์ ํ์ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ง์ ์ฌ๋๋ค์ด ๋ฆฌ์์ค ๋ฉ์๋๋ฅผ HTTP ๋ฉ์๋ (์ : GET / PUT / POST / DELETE)์ ์๋ชป ์ฐ๊ด์ํต๋๋ค. Roy Fielding์ ์ด๋ค ์กฐ๊ฑด์์ ์ด๋ค ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผํ๋์ง์ ๋ํ ๊ถ์ฅ ์ฌํญ์ ์ธ๊ธ ํ ์ ์ด ์์ต๋๋ค. ๊ทธ๊ฐ ๊ฐ์กฐํ๋ ๊ฒ์ ๊ท ์ผ ํ ์ธํฐํ์ด์ค ์ฌ์ผํ๋ค๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด HTTP PUT์ ๊ถ์ฅํ๋ ๋์ ์ ํ๋ฆฌ์ผ์ด์ API๊ฐ ๋ฆฌ์์ค๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด HTTP POST๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋๋ ์์ฉ ํ๋ก๊ทธ๋จ ์ธํฐํ์ด์ค๋ RESTful์ ๋๋ค.
์ด์์ ์ผ๋ก๋ ์์ ์ํ๋ฅผ ์ ํํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ด ์์ ํํ์ ์ผ๋ถ๊ฐ๋์ด์ผํฉ๋๋ค - ์ง์๋๋ ๋ชจ๋ ๋ฐฉ๋ฒ๊ณผ ํํ์ ๋ ๋ ํ์์ ํฌํจํฉ๋๋ค.
์ด๊ธฐ URI (์ฑ ๊ฐํผ)์ ์๋ ๋ ๋์์ ์ ํฉํ ํ์คํ ๋ ๋ฏธ๋์ด ์ ํ ์งํฉ (์ฆ, API๋ฅผ ์ฌ์ฉํ ์์๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ดํดํ ๊ฒ์ผ๋ก ์์)์ ๋์ด์๋ ์ฌ์ ์ง์์ด์๋ REST API๋ฅผ ์ ๋ ฅํด์ผํฉ๋๋ค.
์ด ์์ ๋ถํฐ ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ ์ํ ์ ํ์ ์์ ๋ ํํ์ ์กด์ฌํ๋ ์๋ฒ ์ ๊ณต ์ ํ์ฌํญ์ ํด๋ผ์ด์ธํธ ์ ํ์ ์ํด ๊ตฌ๋๋๊ฑฐ๋ ์ด๋ฌํ ํํ์ ๋ํ ์ฌ์ฉ์์ ์กฐ์์ ์ํด ์์๋์ด์ผ ํฉ๋๋ค.
์ ์ด๋ ๋ฏธ๋์ด ์ ํ๋ค ๋ฐ ์์ ํต์ ๋ฉ์ปค๋์ฆ๋ค์ ๋ํ ํด๋ผ์ด์ธํธ์ ์ง์์ ์ํด ๊ฒฐ์ (๋๋ ์ ํ)๋ ์ ์์ผ๋ฉฐ, ์ด๋ค ๋ชจ๋๋ ์ฆ์์์ ๊ฐ์ ๋ ์ ์๋ค(์๋ฅผ ๋ค์ด, ์ฃผ๋ฌธํ ์ฝ๋). [์ฌ๊ธฐ์ ์คํจ๋ ๋์ญ ์ธ ์ ๋ณด๊ฐ ํ์ดํผํ ์คํธ ๋์ ์ํธ ์์ฉ์ ์ ๋ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.]
4. REST and HTTP are Not the Same
๋ง์ ์ฌ๋๋ค์ด HTTP์ REST๋ฅผ ๋น๊ตํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. REST์ HTTP๋ ๋์ผํ์ง ์์ต๋๋ค.
REST != HTTP
REST๋ ๋ํ ์น (์ธํฐ๋ท)์๋ณด๋ค ๋ฅ๋ฅ ์ ์ด๊ณ ํ์ค์ผ๋ก ๋ง๋ค๋ ค๊ณ ํ์ง๋ง Roy Fielding์ REST ์์น์๋ณด๋ค ์๊ฒฉํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์์ง์งํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋๋ค์ด REST๋ฅผ ์น๊ณผ ๋น๊ตํ๊ธฐ ์์ํ๋ ค๊ณ ํฉ๋๋ค.
Roy Fielding์ ๊ทธ์ ๋ ผ๋ฌธ์์ ํ๋กํ ์ฝ ๊ธฐ๋ณธ ์ค์ ์ด๋ HTTP๋ฅผ ํฌํจํ์ฌ ๊ตฌํ ๋ฐฉํฅ์ ์ธ๊ธํ์ง ์์์ต๋๋ค. ๊ทธ๋๊น์ง ์ฐ๋ฆฌ๋ REST์ 6 ๊ฐ์ง ๊ธฐ๋ณธ ์์น์ ์กด์คํ๊ณ ์์ผ๋ฉฐ,์ด๋ฅผ ์ธํฐํ์ด์ค ์ธ RESTful์ด๋ผ๊ณ ๋ถ๋ฅผ ์ ์์ต๋๋ค.
5. Summary
๊ฐ๋จํ ๋งํด์ REST ์ํคํ ์ฒ ์คํ์ผ์์ ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ ๋ฆฌ์์ค๋ก ๊ฐ์ฃผ๋๋ฉฐ URI(๋ฒ์ฉ ๋ฆฌ์์ค ์๋ณ์)๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ธ์ค๋ฉ๋๋ค.
๋ฆฌ์์ค๋ ๊ฐ๋จํ๊ณ ์ ์ ์๋ ์์ ์งํฉ์ ์ฌ์ฉํ์ฌ ์๋ํฉ๋๋ค. ๋ํ ํด๋ผ์ด์ธํธ๊ฐ HTML, XML, ์ผ๋ฐ ํ ์คํธ, PDF, JPEG, JSON ๋ฑ๊ณผ ๊ฐ์ ๋ค์ํ ํ์์ ์ฝํ ์ธ ์ ์ก์ธ์คํ ์ ์๋๋ก ๋ฆฌ์์ค๋ฅผ ํํ์์ ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ํ์คํ๋ ์ธํฐํ์ด์ค์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค์ ํํ์ ๊ตํํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก HTTP๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์ด์ง๋ง REST๋์ด๋ฅผ ์๊ตฌํ์ง ์์ต๋๋ค.
์์์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ์บ์ฑ์ ์ ์ดํ๊ณ , ์ ์ก ์ค๋ฅ๋ฅผ ๊ฐ์งํ๊ณ , ์ ์ ํ ํํ ํ์์ ํ์ํ๊ณ , ์ธ์ฆ ๋๋ ์ก์ธ์ค ์ ์ด๋ฅผ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์๋ฒ์์ ๋ชจ๋ ์ํธ ์์ฉ์ด ์ํ ๋น์ ์ฅ์ด์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๋ชจ๋ ์์น์ RESTful ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐ๋จํ๊ณ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๋๋ก ๋์์ค๋๋ค.
์ฐธ์กฐ:
Fielding Dissertation: CHAPTER 5: Representational State Transfer (REST)
proxy CERN Proxy, Netscape Proxy, Gauntlet
www.ics.uci.edu