๐ ์ด ํฌ์คํ ์์๋ HTTP์ REST API์ ๊ฐ๋ ์ ๋ํด ์ ๋ฆฌํ์์ต๋๋ค.
๐ฅ REST API ๋?
๐ฅ REST API ์ค๊ณ ๊ท์น
โ๏ธ ful์ด๋ Statless์ Stateful๊ณผ ๊ฐ์ด ful์ด ๋ถ์ผ๋ฉด "~ํ", "~์ค๋ฌ์ด", "~๋ค์ด" ์๋ฏธ๋ก ํด์ํ๋ฉด ๋๋ค. ์ด์ RESTful API๋ "RESTํ API", "REST ๋ค์ด" ์ ๋๋ก ํด์ํ ์ ์๋ค.
โ๏ธ ์ฆ, REST์ ์๋ฆฌ ๋๋ REST์ ํ์์ ๊ฐ์ถฐ ์ค๊ณ๋ ์์คํ ์ RESTfulํ๋ค ํ๊ณ , ์ด์ REST API๋ฅผ ์ ๊ณตํ๋ ์น ์๋น์ค๋ฅผ RESTful ํ๋ค๊ณ ํ ์ ์๋ค.
โ๏ธ REST๋ "Representational State Transfer"์ ์ฝ์์ด๋ค. ๊ทผ๋ฐ RST์ด์ง ์ REST๋ ํ ์ ์์ง๋ง, ์ด์ ๋ ๋ชจ๋ฅธ๋ค. Representational์์ RE๋ฅผ ๋ฐ์๋ค.
โ๏ธ ๊ทธ๋ผ REST๋ ๊ฒ์ด ๋ฌด์์ธ๊ฐ. REST๋ HTTP URI๋ฅผ ํตํด ์์(Resource)์ ๋ช ์ํ๊ณ , HTTP Method๋ฅผ ํตํด ์์์ ๋ํ ํ์๋ฅผ ์ ์ฉํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
โ๏ธ "์ฌ๋์ด ์ธ์งํ๊ธฐ ์ฝ๊ฒ ์์๊ณผ ์ํ๋ฅผ ํํํ API"์ด๋ค. ๊ฒฐ๊ตญ REST API๋ ์ด๋ค ๊ธฐ์ ์ด ์๋๋ผ ํ์์ด๋ฉฐ API๊ฐ RESTํ ํ์์ ๋ฐ๋์ ๋, REST API๋ผ ํ ์ ์๋ค.
โ๏ธ ์ด์ REST(Representational State Transfer)์ API๋ HTTP ํ๋กํ ์ฝ์ ์ด์ฉํด์ ์์์ ํ์๋ HTTP ๋งค์๋๋ก ํํํ๊ณ , URI๊ฐ ์์์ ์๋ณํ ์ ์๊ฒ ์ค๊ณ๋ ํ์์ ์๋ฏธํ๋ค.
โ๏ธ RESTful API๋ ๊ทธ ์์ฒด๋ก๋ง์ผ๋ก๋ API ๋ชฉ์ ์ด ์ฝ๊ฒ ์ดํด๋๋ค๋ ์ฅ์ ์ด ์์ผ๋, ํ์ค ๊ท์ฝ์ด ์๊ธฐ ๋๋ฌธ์ ์ํฐํจํด(์ค์ ๋ง์ด ์ฌ์ฉ๋๋ ํจํด์ด์ง๋ง ๋นํจ์จ์ ์ด๊ฑฐ๋ ๋น์์ ์ธ ํจํด)์ผ๋ก ์์ฑ๋๋ ๊ฒฝ์ฐ๊ฐ ํํ๋ค.
โ๏ธ resource๋ ๋์ฌ๋ณด๋ค๋ ๋ช
์ฌ๋ฅผ, ๋๋ฌธ์๋ณด๋ค๋ ์๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ค.
โ๏ธ resource์ ๋ํ๋จผํธ ์ด๋ฆ์ผ๋ก๋ ๋จ์ ๋ช
์ฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
โ๏ธ resource์ ์ปฌ๋ ์
์ด๋ฆ์ผ๋ก๋ ๋ณต์ ๋ช
์ฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
โ๏ธ resource์ ์คํ ์ด ์ด๋ฆ์ผ๋ก๋ ๋ณต์ ๋ช
์ฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
โ๏ธ ์์์ ๋ํ ํ์๋ HTTP Method(GET, PUT, POST, DELETE ๋ฑ)๋ก ํํํ๋ค.
GET /members/delete/1 ๐ REST API๊ฐ ์๋ ๊ฒฝ์ฐ GET /members/1 ๐ REST API์ ๊ท์น์ ๋ฐ๋ฅธ ๊ฒฝ์ฐ
โ๏ธ ์ด์ ์์์ ํ์๋ก์จ ๋์ฌ ํํ์ ๋ถ๊ฐํผํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ URL์ ๋ค์ด๊ฐ๋ฉด ์๋๋ค.
โ๏ธ ์ฌ๋์ ๊ตฌ๋ถ์(/)๋ ์์์ ๊ณ์ธต ๊ด๊ณ๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉํ๋ค. URI ๋ง์ง๋ง์๋ ์ฌ๋์(/)๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
โ๏ธ ๋ถ๊ฐํผํ๊ฒ ๊ธด URI๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ํ์ดํ์ ์ฌ์ฉํด ๊ฐ๋
์ฑ์ ๋์ธ๋ค.
โ๏ธ ๋ฐ์ค์ ๋ณด๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๊ฐ๋
์ฑ์ ์ํด ์ฌ์ฉํ์ง ์๋๋ค.