REST API
API? Application Programming Interface์ ์ฝ์๋ก ์์ฉํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋๋ก, ์ด์ ์ฒด์ ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ ์ด ํ ์ ์๊ฒ ๋ง๋ ์ธํฐํ์ด์ค
REST ์ํคํ ์ฒ ์คํ์ผ์ ๋ฐ๋ฅด๋ API
Representational State Transfer์ ์ฝ์๋ก ์์(data)๋ฅผ ์ด๋ฆ(ํํ)์ผ๋ก ๊ตฌ๋ถํ์ฌ ํด๋น ์์์ ์ํ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ชจ๋ ๊ฒ (์น ์์คํ ์ ๊ธฐ๋ณธ์ ์ ์งํ๋ฉด์, ๋ ๋ฆฝ์ ์ธ ์งํ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํ ๋ฐฉ๋ฒ)
data๋ฅผ ํํํ๊ณ ์ด data์ ์ํ(์ ๋ณด)๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ผ๋ก ๋ก์ด ํ๋ฉ
์ด http
์ค๊ณ ์ฐ์์ฑ์ ๋นํด ์ ๋๋ก ์ฌ์ฉ๋์ง ๋ชปํ๋ ๊ฒ๊ฐ์ ์ฅ์ ์ ์ต๋ํ ํ์ํ ์ ์๋ ์ํคํ
์ฒ๋ก ๋ฐํํ ๊ฒ
HTTP URI(Uniform Resource Identifier)๋ฅผ ํตํด ์์์ ๋ช ์ํ๊ณ , HTTP Method(Post/Get/Put/Delete)๋ก ์์์ ์ํ๋ฅผ ์ ์ฉํ์ฌ ์๋ฒ๋ Json/Xml๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ก ์ ๋ฌํ๋ ๋ฐฉ์
๊ตฌ์ฑ
์์(Resource) : URI
ํ์(Verb) : Method
ํํ
ํน์ง
Uniform Interface : ์ ํด์ง ๋ฐฉ๋ฒ์ผ๋ก ์์ ์ ์ํํ๋ ์ํคํ ์ณ ์คํ์ผ ์ด๋ค.
Stateless : ์ธ์ /์ฟ ํค์ ๊ฐ์ ์ํ ์ ๋ณด๋ฅผ ๋ณ๋๋ก ์ ์ฅ ๊ด๋ฆฌ ํ์ง ์์ ์๋น์ค ์์ ๋๊ฐ ๋์์ง๋ค.
Casheable : httpํ๋กํ ์ฝ ํ์ค์ last-modified๋ E-Tag๋ฅผ ์ด์ฉํด ์บ์ฑ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
client-server : ์๋ฒ๋ api๋ฅผ ์ ๊ณตํ๊ณ ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ์์ธ์ฆ, ์ปจํ ์ค๋ฑ ์ ์ง์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ์ญํ ์ด ํ์คํ ๊ตฌ๋ถ์ด ๋์ด ์๋ก๊ฐ ์์กด์ฑ์ด ์ค์ด๋ ๋ค.
Self-descriptiveness : ๋ฉ์์ง๋ง ๋ณด๊ณ ๋ฌด์์ ์๋ฏธํ๋์ง ์ฝ๊ฒ ์ดํด ํ ์ ์๋ ๊ตฌ์กฐ์ด๋ค.
๊ณ์ธตํ ๊ตฌ์กฐ : ๋ค์ค ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑํ ์ ์์ด ๋ณด์/๋ก๋ ๋ฐธ๋ฐ์ฑ/์ํธํ ๊ณ์ธต์ ์ถ๊ฐํด ๊ตฌ์กฐ์ ์ ์ฐ์ฑ์ ๋ ์ ์๊ณ , Proxy/GateWay ๊ฐ์ ๋คํธ์ํฌ ๊ธฐ๋ฐ์ ์ค๊ฐ๋งค์ฒด๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
๋จ์
ํ์ค์ด ์กด์ฌ ํ์ง ์์ REST API๊ท์น์ด ์ ๋๋ก ์ ์ฉํ๊ณ ์์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
Self-Describtive Message : ๋ฉ์ธ์ง๋ง ๋ณด๊ณ ํด์ํ ์ ์์ด์ผ ํ๋๋ฐ ํ์ฌ, post๋ฅผ ๋จ๋ฐํ๋ api๊ฐ ๋ง๋ค.
ํด๊ฒฐ๋ฐฉ๋ฒ
๋ฏธ๋์ด ํ์ ์ ์ ์ํ๊ณ , IANA์ ๋ฑ๋กํ๊ณ ๊ทธ ๋ฏธ๋์ด ํ์ ์ ๋ฆฌ์์ค ๋ฆฌํดํ ๋, Content-Type์ผ๋ก ์ฌ์ฉํ๋ค.
profile ๋งํฌ ํค๋๋ฅผ ์ถ๊ฐ (๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๋ค์ด ์คํ์ ์ง์์ ์ ์ํ๊ธฐ ๋๋ฌธ์
HAL
์ ๋งํฌ ๋ฐ์ดํฐ์ profile๋งํฌ ์ถ๊ฐ)
HATEOAS (Hypermedia As The Engine Of Application State) : ํ์ดํผ ๋งํฌ๋ฅผ ํตํด ์ํ ์ด๋์ด ์ผ์ด๋์ผ ํ๋ค. (๋งํฌ๊ฐ ์์ผ๋ฉด ์ํ ์ ์ด๋ ๋ถ๊ฐ๋ฅ)
ํด๊ฒฐ๋ฐฉ๋ฒ
๋ฐ์ดํฐ์ ๋งํฌ๋ฅผ ์ ๊ณต : ๋งํฌ๋ฅผ HAL์ ์ด์ฉํด ์ ์
Last updated