๐ค REST API๋?
REST API, RESTful API, ๋ง์ด ๋ค์ด๋ดค์ง๋ง ๋๋ฌด๋๋ ์ถ์์ ์ผ๋ก ๋๊ปด์ ธ์ ์ค๋ช ์ ํ๋ ค๋ ์ด๋ ต๊ฒ ๋๊ปด์ ธ์ ๋ค์ ๊ฐ๋จํ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค.
๋จผ์ API๋ Application Programming Interface์ ์ฝ์๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋๋ฐ์ด์ค๊ฐ ์๋ก๊ฐ ์ฐ๊ฒฐํ์ฌ ํต์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ๊ท์น ์ธํธ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ฆ, ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์๋น์ค๊ฐ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์๋น์ค ๋ด์ ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์๊ฒ ํด์ฃผ๋ ๋งค์ปค๋์ฆ์ด๋ค.
REST API์์ REST๋ REpresentational State Transfer์ ์ฝ์๋ก, RESTํ ์ํคํ ์ฒ ์คํ์ผ์ ๋์์ธ ์์น์ ์ค์ํ๋ API๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋์ RESTful API๋ผ๊ณ ๋ ํ๋ ๊ฒ. REST์ ํต์ฌ ์์น์ ๋ฌด์์ผ๊น?
๐ค REST ํต์ฌ ์์น
1. ๊ท ์ผํ ์ธํฐํ์ด์ค
์์ฒญ์ด ์ด๋์ ์ค๋์ง์ ๋ฌด๊ดํ๊ฒ ๋์ผํ ๋ฆฌ์์ค์ ๋ํ ๋ชจ๋ API ์์ฒญ์ ๋์ผํ๊ฒ ๋ณด์ฌ์ผ ํจ. ํ๋์ URI(Uniform Resource Identifier)์ ์ํจ์ ๋ณด์ฅํด์ผํจ
2. ํด๋ผ์ด์ธํธ - ์๋ฒ ๋์ปคํ๋ง
ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก ์์ ํ ๋ ๋ฆฝ์ ์ด์ด์ผ ํจ. ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์์ผ ํ๋ ์ ์ผํ ์ ๋ณด๋ ์์ฒญ๋ ๋ฆฌ์์ค์ URI. ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ํธ์์ฉ ๋ถ๊ฐ. ๋ํ, ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ HTTP๋ฅผ ํตํด ์์ฒญ๋ ๋ฐ์ดํฐ์ ์ ๋ฌํ๋ ๊ฒ ๋ง๊ณ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ํ์ง ์์์ผ ํจ
3. Stateless
์ํ ์์. ๊ฐ ์์ฒญ์์ ์ด์ ์ฒ๋ฆฌ์ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ํฌํจํด์ผ ํจ. REST API๋ ์๋ฒ ์ธก ์ธ์ ์ ํ์๋ก ํ์ง ์์.
4. ์บ์ฑ ๊ฐ๋ฅ์ฑ
๊ฐ๋ฅํ๋ฉด ๋ฆฌ์์ค๋ฅผ ํด๋ผ์ด์ธํธ ๋๋ ์๋ฒ ์ธก์์ ์บ์ฑํ ์ ์์ด์ผ ํจ. ๋ํ ์๋ฒ ์๋ด์๋ ์ ๋ฌ๋ ๋ฆฌ์์ค์ ๋ํด ์บ์ฑ์ด ํ์ฉ๋๋์ง ์ฌ๋ถ์ ๋ํ ์ ๋ณด๋ ํฌํจ๋์ด์ผ ํจ.
5. ๊ณ์ธต ๊ตฌ์กฐ ์ํคํ ์ฒ
ํธ์ถ๊ณผ ์๋ต์ด ์๋ก ๋ค๋ฅธ ๊ณ์ธต์ ํต๊ณผํจ. ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ก๊ฐ ์ง์ ์ฐ๊ฒฐ๋๋ค๊ณ ๊ฐ์ ํ์ง ์๋ ๊ฒ์ด ์ข์. ํต์ ๋ฃจํ์ ๋ค์์ ์๋ก ๋ค๋ฅธ ์ค๊ฐ์๊ฐ ์์ ์ ์๊ณ , ์ ์ ์๋๋ก ์ค๊ณ๋์ด์ผ ํจ.
6. ์ฝ๋ ์จ๋๋งจ๋(์ต์ )
์ผ๋ฐ์ ์ผ๋ก ์ ์ ๋ฆฌ์์ค๋ฅผ ์ ์กํ์ง๋ง, ํน์ ํ ๊ฒฝ์ฐ์๋ ์๋ต์ ์คํ์ฝ๋๋ฅผ ํฌํจํ ์๋ ์์. ์ด ๊ฒฝ์ฐ ์ฝ๋๋ ์์ฒญ์์๋ง ์คํ๋์ด์ผ ํจ.
์์ ๊ฐ์ ์์น์ ๋ง๊ฒ ์ค์ ๋ API๋ฅผ REST API๋ผ๊ณ ํ๋ค. ๊ทธ๋ฌ๋ฉด REST API๋ ์ด๋ป๊ฒ ์๋ํ๋ ๊ฑธ๊น?
๐ค REST API์ ์๋ ์๋ฆฌ
REST API๋ HTTP ์์ฒญ์ ํตํด ํต์ ํจ์ผ๋ก์จ ๋ฆฌ์์ค ๋ด์์ ๋ ์ฝ๋(CRUD)์ ์์ฑ, ์ฝ๊ธฐ, ์ ๋ฐ์ดํธ ๋ฐ ์ญ์ ๋ฑ์ ํ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฅ์ ์ํํ๋ค.
์๋ฅผ ๋ค์ด, REST API๋ GET ์์ฒญ์ ์ฌ์ฉํ์ฌ ๋ ์ฝ๋๋ฅผ ๊ฒ์ํ๊ณ , POST ์์ฒญ์ ์ฌ์ฉํ์ฌ ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉฐ, PUT ์์ฒญ์ ์ฌ์ฉํ์ฌ ๋ ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํ๊ณ , DELETE ์์ฒญ์ ์ฌ์ฉํ์ฌ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ๋ค. ๋ชจ๋ HTTP ๋ฉ์๋๋ API ํธ์ถ์์ ์ฌ์ฉ๋ ์ ์๋ค. ์ ๋์์ธ๋ REST API๋ HTTP ๊ธฐ๋ฅ์ด ๋ด์ฅ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ ์น ์ฌ์ดํธ์ ์ ์ฌํ๋ค.
ํน์ ์๊ฐ ๋๋ ํ์์คํฌํ์ ๋ฆฌ์์ค ์ํ๋ฅผ ๋ฆฌ์์ค ํํ์ด๋ผ๊ณ ํ๋๋ฐ, ์ด๋ฌํ ์ ๋ณด๋ JSON(JavaScript Object Notation), HTML, XLT, Python, PHP ๋๋ ์ผ๋ฐ ํ ์คํธ๋ฅผ ํฌํจํ์ฌ ์ค์ ๋ก ๊ฑฐ์ ๋ชจ๋ ํ์์ผ๋ก ํด๋ผ์ด์ธํธ์ ์ ๋ฌ๋ ์ ์๋ค. JSON์ ์ฌ๋๊ณผ ๊ธฐ๊ณ๊ฐ ๋ชจ๋ ์ฝ์ ์ ์๊ณ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ตฌ์ ๋ฐ์ง ์๊ธฐ ๋๋ฌธ์ ์์ฃผ ์ฌ์ฉ๋๋ค.
์์ฒญ ํค๋์ ๋งค๊ฐ๋ณ์ ์ญ์ ๋ฉํ๋ฐ์ดํฐ, ๊ถํ ๋ถ์ฌ, URI(Uniform Resource Identifier), ์บ์ฑ, ์ฟ ํค ๋ฑ์ ์ค์ํ ์๋ณ์ ์ ๋ณด๋ฅผ ํฌํจํ๋ฏ๋ก REST API ํธ์ถ์์ ์ค์ํ๋ค. ์์ฒญ ํค๋์ ์๋ต ํค๋๋ ์ผ๋ฐ์ ์ธ HTTP ์ํ ์ฝ๋์ ํจ๊ป ์ ๋์์ธ๋ REST API ๋ด์์ ์ฌ์ฉ๋๋ค.
'Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก์ ํธ ๋์๋ณด๊ธฐ ํ๋ก์ ํธ] ์ฒซ ๋ฒ์งธ, Next.js ํ๋ก์ ํธ์์ React-query๊ฐ ํ์ํ ๊น? (0) | 2024.04.08 |
---|---|
CS ๊ฐ๋ ์ ๋ฆฌ (0) | 2024.04.05 |
์ฝ๋์ ์คํ๋ฆฐํธ ํ๋ก ํธ์๋ ๋ถํธ์บ ํ ํ๊ธฐ (2) | 2024.03.04 |
์ธ ๋ฒ์งธ ํ๋ก์ ํธ ํ๊ณ (0) | 2024.03.04 |
์๋ฒ ์ํ์ ํด๋ผ์ด์ธํธ ์ํ์ ์ฐจ์ด (0) | 2024.02.14 |