๐ REST(REpresentational State Transfer)
- REST๋ HTTP ๊ธฐ๋ฐ์ ์ํํธ์จ์ด ์ํคํ ์ฒ ์คํ์ผ์ ๋๋ค.
- REST๋ "REpresentational(ํํ๋) State(์์/๋ฐ์ดํฐ์ ์ํ)๋ฅผ Transfer(์ ๋ฌ)"์ ์ฝ์๋ก ์์/๋ฐ์ดํฐ๋ฅผ ํ๋์ ์์๋ณผ ์ ์๋๋ก ํํํ๊ณ , ํํํ ์์/๋ฐ์ดํฐ์ ์ํ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
(์์ฒญ์ ์ํ๋ง์ผ๋ก ํด๋น ์์ฒญ์ด ๋ฌด์จ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ๊ฒ์ธ์ง ์ถ๋ก ํ ์ ์๋ ์ํ)
๐ API(Application Programming Interface)
- ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด ์ํํธ์จ์ด๋ผ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ผ์ข ์ ์์ฒญ๋ฐฉ์์ API๋ผ ๋ถ๋ฆ ๋๋ค.
- API์ ์์ฒญ ๋ฐฉ์์ ์ง์ ๋ ๊ท์น ๋ฐ ์ฝ์์ด ์์ต๋๋ค.
REST์ ํน์ง์ ๊ธฐ๋ฐ์ผ๋ก API๋ฅผ ๊ตฌํํ๋ ๊ฒ์ REST API๋ผ ๋ถ๋ฆ ๋๋ค.
REST API๋ ์ํํธ์จ์ด์ ์์ฒญ์ด ์ด๋ ํ ๋์์ธ์ง, ์ด๋ ํ ์ ๋ณด๋ฅผ ์ํ๋ ๊ฒ์ธ์ง ํด๋น ์์ฒญ์ ๋ชจ์ต๋ง์ผ๋ก๋ ์ถ๋ก ์ด ๊ฐ๋ฅํ ์์ฒญ ๋ฐฉ์์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
RESTful API๋ REST ์ค๊ณ์ง์นจ์ ๋์จ 6๊ฐ์ง ์กฐ๊ฑด์ ๋ชจ๋ ์ถฉ์กฑํ์ฌ ์ค๊ณ๋ API๋ฅผ ์๋ฏธํฉ๋๋ค.
๐ REST์ ์ค๊ณ์ง์นจ 6๊ฐ์ง
- Client-Server
- Stateless
- Cacheable
- โญ๏ธUniform Interface(๊น๋ค๋ก์ด ์กฐ๊ฑด)
- Layered System
- Code On Demand
๐ ์ธํฐํ์ด์ค์ ์ผ๊ด์ฑ(Uniform Interface)
1. ์์์ ์๋ณ(identification of resources)
์๊ฐ์ด ์ง๋๋ ์๋ณํ ์ ์๋ ๊ณ ์ ํ ์๋ณ์๋ฅผ ๋ถ์ฌํด์ผ ํฉ๋๋ค.
์ฆ, ์์์ URI๋ก ์๋ณํด์ผ ํฉ๋๋ค.2. ํํ์ ํตํ ์์์ ์กฐ์(manipulation of resources through representations)
ํด๋ผ์ด์ธํธ๊ฐ ์์์ ์์ฒญํ๋ฉด ์๋ฒ๋ ์์ฒญํ ์์์ ํํํ์ฌ ์๋ตํด์ผ ํฉ๋๋ค.
(์์์ ํํ์ ๋ฌธ์, ํ์ผ, XML, JSON ๋ฑ ์ด ์ด์ต๋๋ค.)3. ์๊ธฐ ์์ ์ ๋ฉ์์ง(self-descriptive messages)
ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์ค๊ฐ๋ ์์ฒญ/์๋ต ๋ฉ์์ง๋ฅผ ์ค์ค๋ก ์ปดํจํฐ(์ค๋งํธํฐ)์๊ฒ ์ค๋ช ํ ์ ์๋๋ก ์ถฉ๋ถํ ์ ๋ณด๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค.4. HATEOAS(Hypermedia As The Engine Of Application State)
ํ์ดํผ๋๋ฏธ์ด(๋งํฌ)๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ด์ผ ํ๋ฉฐ, ํ์ดํผ๋๋ฏธ์ด(๋งํฌ)์๋ ๊ทธ์ ๋ง๋ ์ ๋ณด๊ฐ ๋ด๊ฒจ์์ด์ผ ํฉ๋๋ค.
๐REST์ ์ค๊ณ์ง์นจ์ ๋ชจ๋ ๋ฐ๋ผ์ผํ ๊น??
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด ๋ชจ๋ ๋ฐ๋ฅผ ํ์๊ฐ ์์ต๋๋ค.
- ์ํฉ๊ณผ ์กฐ๊ฑด์ ๋ฐ๋ผ RESTfulํ ๋ฐฉ์์ API ์ค๊ณ/๊ฐ๋ฐ์ด ์คํ๋ ค ๋นํจ์จ์ (๊ตฌ์กฐ์ ๋๋ ์๊ฐ์ , ๋น์ฉ์ ์ผ๋ก ๋นํจ์จ)์ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- REST์ ์ค๊ณ์ง์นจ ์ค์์ Uniform Interface(ํนํ self-descriptive, HATEOAS)์ ์กฐ๊ฑด์ ์ถฉ์กฑํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ REST API๋ RESTfulํ์ง ์์ต๋๋ค.