๐ ํ๋กํ ์ฝ์ด๋ ํ์ค์ด ์๋ ์น ์๋น์ค์ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ฒฝ๋ํ์ ํ์์ ๋ง์ถ ์ํคํ ์ฒ ์์น ์ธํธ (์ํํธ์จ์ด ์ํคํ ์ฒ)
๐ ๊ฐ์ด๋๋ผ์ธ์ด๋ฏ๋ก ๊ฐ๋ฐ์๋ REST๋ฅผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ๊ตฌํ ๊ฐ๋ฅํจ
๐ 'REST ์ํคํ ์ฒ'์ ์ ์ฝ์กฐ๊ฑด์ ์ค์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค
๐ URI(์์) + HTTP Method(ํ์) + ํํ์ผ๋ก ๊ตฌ์ฑ
๐ ๋ฐ์ดํฐ ์์ฒญ์ ์ผ๋ฐ์ ์ผ๋ก HTTP(ํ์ดํผํ ์คํธ ์ ์ก ํ๋กํ ์ฝ)์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ๋ฏ๋ก ์ด๋ฃจ์ด์ง
๐ ์์ฒญ์ ์์ ํ๋ฉด RESTful API ๋๋ RESTful ์น ์๋น์ค๊ฐ HTML, XML, ์ผ๋ฐํ ์คํธ, JSON๊ณผ ๊ฐ์ ํ์์ ๋ฉ์์ง๋ฅผ ๋ฐํํจ.
โป REST = Representational State Transfer
๐ REST API๋ฅผ ๋จ์ํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ํ ๊ฒ
๐ 6๊ฐ์ง ์ํคํ ์ฒ ๊ฐ์ด๋๋ผ์ธ์ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์
Client-Server : ํด๋ผ์ด์ธํธ + ์๋ฒ + ๋ฆฌ์์ค ๊ตฌ์ฑ์ 'ํด๋ผ์ด์ธํธ-์๋ฒ ์ํคํ ์ฒ'
Stateless : Statelessํด๋ผ์ด์ธํธ-์๋ฒ ์ปค๋ฎค๋์ผ์ด์ (๋จ, ์ธ์ ์ ์ํ์ ๋ํ ์ ๋ณด๊ฐ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋)
Cacheable : ์ผ๋ถ ์ปค๋ฎค๋์ผ์ด์ (request, response)์์ ์บ์ ๋ฐ์ดํฐ ์ฌ์ฉ์ด ํ์ํจ
Uniform Inerface : ์ปค๋ฎค๋์ผ์ด์ ์ ์ ์ฒด์ ์ธ ์ํคํ ์ฒ๋ฅผ ์ ํ์ ํ ์ ์๋ ์ผ๊ด๋ ์ธํฐํ์ด์ค(์๊ตฌ์ฌํญ) ํ์
Layered System : ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ์ ๊ณ์ธต์ ์ธ ์ํธ์์ฉ์ ์ํ ์์คํ ์ ์ฝ ํ์ (ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ๋ณด๋ฅผ ์ ์ ์๋๋ก)
Self-Descriptiveness : ์ ํ์ ์ฝ๋ ์จ๋๋งจ๋(์๋ฒ๊ฐ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์๋ตํด ํด๋ผ์ด์ธํธ์์ ์คํํ ์ ์๋๋ก ํ๋ ํ์)
์๋ฌธ์ ์ฌ์ฉ
๊ณ์ธต ๊ด๊ณ๋ ์ฌ๋์(/)๋ก ํํ
๋ฆฌ์์ค๋ช ์ ๋ช ์ฌ ์ฌ์ฉ
ํ์ดํ(-) ์ฌ์ฉ (์ธ๋์ค์ฝ ์ฌ์ฉโ)
URI์ ๋ง์ง๋ง์ ์ฌ๋์โ
Ref ๐