๐ฏ ์ฌ๋ฐ์ RESTful
[10๋ถ ํ ์ฝํก] ๐ฏ ์ฌ๋ฐ์ RESTful ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํจ.
REST๋
๋ถ์ฐ ํ์ดํผ๋ฏธ๋์ด ์์คํ ์ ์ํ ์ํํธ์จ์ด ์ํคํ ์ณ - MDN
๋คํธ์ํฌ ๋ฆฌ์์ค๋ฅผ ์ ์ํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ์ผ๋ จ์ ์์น์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ํคํ ์ฒ ์คํ์ผ
๋คํธ์ํฌ ๋ฆฌ์์ค, ์๋ฅผ๋ค์ด ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์ ๋ํด ์ ๋ฆฌํ ์์น์ด ์๊ณ ๊ทธ ์์น์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ํคํ ์ณ ์คํ์ผ์ REST๋ผ๊ณ ํ๋ค.
๋ก์ดํ๋ฉ
REST์ ๋ํ ์์น์ ๋ก์ดํ๋ฉ์ด๋ผ๋ ๋ํ์์์ ๋ฐ์ฌํ์ ๋ ผ๋ฌธ์ผ๋ก ์ฒ์ ๋ฑ์ฅํ๋ค. ๋ก์ดํ๋ฉ์ HTTP์ ์ฃผ์ ์ ์ ์ค ํ ์ฌ๋์ผ๋ก HTTP๊ฐ ์ ๋๋ก ์ฌ์ฉ๋์ง ๋ชปํ๋ ์ ์ ์ํ๊น์ํ๋ฉฐ HTTP์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํคํ ์ณ๋ก์จ REST๋ฅผ ๋ฐํํ๋ค๊ณ ํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก REST์์น์ HTTP๋ฅผ ์ ํ์ฉํ๊ธฐ ์ํ ์์น์ด๋ผ๊ณ ๋ ํ ์ ์๋ค.
์ผ๋ฐ์ ์ธ REST API์ ๊ตฌ์กฐ์ ํน์ง
์ด REST์ ๋ํ ์์น์ ์ค์ํ์ ๋ ์ฐ๋ฆฌ๋ ๊ทธ ์์คํ ์ด RESTfulํ๋ค ๋ผ๊ณ ํ๋ค.
REST๋ ์์ ์ดํด ๋ณด์๋ฏ์ด, ํน์ ๊ธฐ์ ์ด ์๋๋ผ ์ํคํ ์ฒ ์คํ์ผ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ์น ๊ฐ๋ฐ์ ํ๋ฉด์ ์ด REST ์ํคํ ์ณ ์คํ์ผ์ ์ฐธ๊ณ ํด์ ์ค๊ณํ API๋ฅผ ๋ง์ด ์ฐพ์๋ณผ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ API๋ค๋ ๋ฒ์ฉ์ ์ผ๋ก REST API,
RESTfulํ๊ฒ ์ค๊ณ๋ REST-style API๋ผ๊ณ ๋ ํ๋ค.

REST๋ Representational State Transfer์ด๋ผ๋ ๋ป์ผ๋ก ์ง์ญํ์๋ฉด, ํํ์ ์ธ ์ํ ์ ๋ฌ์ด๋ค. ์ฌ๊ธฐ์ ๋ง๋ถ์ฌ์ ์์ญํด ๋ณด์๋ฉด ์์(๋ฆฌ์์ค)์ ํํ์ ์ํ ์ํ(์ ๋ณด) ์ ๋ฌ์ด๋ผ๋ ๋ป์ ๊ฐ์ง๋ค.
์ฌ๊ธฐ์ ์์์ ํํ์ REST์ ๊ฐ์ฅ ํฐ ํน์ง์ด๋ค.
์์์ ํํ

URI ๋ง ๋ณด๊ณ ์๋ ์ด๋์ ๋ ์ ๋ณด์ ๋ํด ์ ์ถํ ์ ์๋ค.
์ด์ฒ๋ผ ๋ฆฌ์์ค๋ฅผ URI์ ํํํด์ ์ฃผ๊ณ ๋ฐ์ ์ ๋ณด์ ๋ํด ์ด๋์ ๋ ์์ธก์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
REST API ์์ URI๋ ์ด๋ค ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋์ง ์ดํด๋ณด์.

ํ ์ด๋ธ ์ ์ฒด์ ํด๋นํ๋๋ถ๋ถ์ Collection ,ํ ํ๋, ํน์ ๊ฐ์ฒด๋ฅผ Document๋ผ๊ณ ํ๋ค. ์ฝ๋ ์ ์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฒด์ ์งํฉ์ด๊ธฐ ๋๋ฌธ์ ๋ณต์ ๋ช ์ฌ๋ฅผ ์ฌ์ฉํ๋ค. ๋คํ๋จผํธ๋ ์ด ์งํฉ(์ฝ๋ ์ )์ค ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถํ ์ ์๋ ๊ฐ,์์์๋ title์ด์ง๋ง ์ผ๋ฐ์ ์ผ๋ก๋ Pk id๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค.
์ฆ URI๋ ์ปฌ๋ ์ ๊ณผ ๋คํ๋จผํธ์ ์กฐํฉ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.

URI์๋ ๋์ฌ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. ์ด๋ฌํ ๋์ฌ๋ ์ ๋ค๋ฆญํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋์ฌ๋ฅผ ์ฐ๊ณ ์ ํจ์ ๊ณง ์์์ ๋ํ ํ์์ ๋ํด ํํํ๊ณ ์ ํ๋ ๋ชฉ์ ์ผ ๊ฒ์ด๋ค.

REST API์์๋ ์์์ ๋ํ ํ์์ ๋ํ ํํ์ ์ํด ๋์ฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋ณด๋ค๋ HTTP ๋ฉ์๋๋ฅผ ํตํด ํํํ๋ค.
ํ์ง๋ง ์ค์ง URI์ ๋ฉ์๋๋ค์ ํ์ฉํด์ ๋ชจ๋ ๊ฒ์ ํํํ๋ ๊ฒ์๋ ํ๊ณ๊ฐ ์๋ค. ex) login, logout, ๊ฒ์ ๋ฑ๋ฑ
๋๊ธ๋จ๊ธฐ๊ธฐ