1. ์ฃผ์ ์ ์ ์ด์
์ง๋ IT์ฉ์ด ์ ๋ฆฌ์์ API์ ๋ํ ์ค๋ช
์ ํ์ผ๋, ๊ฐ์ฅ ์ค์ํ REST API์ ๋ํ ์ค๋ช
์ ๊ฐ๋ตํ๊ฒ ํ๋ค๊ณ ์๊ฐํด์ ํด๋น ์ฃผ์ ์ ๋ํด ์์ธํ ์ค๋ช
ํ๊ณ ์ ์ ์ ํ๋ค. ํ๋ก ํธ ์๋๋ฟ๋ง ์๋๋ผ IT์
๊ณ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ API ๋ฐฉ์์ด๊ธฐ์ ์ด์ ๋ํ ์ ํํ ๊ฐ๋
์ ๋ฐ๋์ ์์งํด์ผ ํ ๊ฒ์ด๋ค.
2. API๋ ๋ฌด์์ธ๊ฐ? === ๋ฉ๋ดํ
- Application Programming Interface์ ์์๋ฆฌ๋ฅผ ์กฐํฉํ์ฌ ๋ง๋ ์ฉ์ด๋ก, ์์ฉ ํ๋ก๊ทธ๋จ์ ํ๋ก๊ทธ๋๋ฐํ๊ธฐ ์ํด ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ํธ์์ฉ์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์ ์ํ ์ ์๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ํด๋ผ์ด์ธํธ(ํ๋ก ํธ์๋)์๊ฒ ์๋ฒ(๋ฐฑ์๋)๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํด์ฃผ๋ฉฐ, ์ด๋ฌํ ์ํธ์์ฉ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ฒ์ด API์ด๋ค.
3. REST API๋ ๋ฌด์์ธ๊ฐ?
3-1. REST API์ ๊ฐ๋
- REpresentational State Transfer์ ์ฝ์๋ก, ์น ์๋น์ค๋ฅผ ์ํ ์ํคํ
์ฒ ์คํ์ผ์ด๋ค.
- ์ด์์ ์ผ๋ก ๋ถ์ํ๋ฉด '๋ํ์ ์ธ ์ํ ์ ๋ฌ์'๋ก API ๋ฐฉ์ ์ค ๊ฐ์ฅ ๋ง์ด ๊ทธ๋ฆฌ๊ณ ํ์ค์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
- ์ํคํ
์ฒ๋ ์์คํ
์ ๊ตฌ์ฑํ๋ ๊ตฌ์ฑ์์๋ค์ ์กฐํฉ๊ณผ ๊ทธ๋ค ๊ฐ์ ์ํธ์์ฉ ๋ฐฉ์์ ์ค๊ณํ๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, REST API์์ ์ธ๊ธํ๋ ์น ์๋น์ค๋ฅผ ์ํ ์ํคํ
์ฒ๋ ํด๋ผ์ด์ธํธ-์๋ฒ ์ํคํ
์ฒ๋ฅผ ์๋ฏธํ๋ค.
- ํด๋ผ์ด์ธํธ-์๋ฒ ์ํคํ
์ธ ๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๊ฐ์์ ์ญํ ์ ๋ถ๋ฐฐํ์ฌ ์์คํ
์ ๊ตฌ์ฑํ๋ค. ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ์๋ฒ๋ ๊ทธ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ๋ฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ ์ญํ ์ ์ํํ๋ค.
- ์ฆ, REST API๋ ์น ์๋น์ค๋ฅผ ์ํ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์์คํ
(์ํคํ
์ฒ)์ ์คํ์ผ์ด๋ผ ์ ๋ฆฌ ํ ์ ์๋ค.
- REST API๋ HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค.
3-2. REST API๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ์์(Resource) ์ค์ฌ์ : ๋ฆฌ์์ค(๋ฐ์ดํฐ)๋ฅผ ์ค์ฌ์ผ๋ก API๋ฅผ ์ค๊ณํ๋ค. ๊ฐ ๋ฆฌ์์ค๋ ๊ณ ์ ํ ์๋ณ์(URI)๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ๊ฐ๋
์ฑ์ด ์ข์ ์์ ์ด๋ ๋ณ๊ฒฝ์ด ์ฉ์ดํ๋ค.
- ํ์คํ๋ ์ธํฐํ์ด์ค: REST API๋ ์ผ๋ฐ์ ์ผ๋ก HTTP ๋ฉ์๋(GET, POST, PUT, DELETE)์ HTTP ์ํ ์ฝ๋(200 OK, 404 Not Found ๋ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค. ์ด๋ ๊ฐ๋ฐ์๊ฐ API๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ๋๋ก ๋์์ค๋ค.
3-3. HTTP๋ ๋ฌด์์ธ๊ฐ?
- HyperText Transfer Protocol์ ์ฝ์๋ก, ์ธํฐ๋ท์์ ์นํ์ด์ง๋ฅผ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํ๋กํ ์ฝ(๊ท์น)์ ์๋ฏธํ๋ค.
- HTTP๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ '์์ฒญ'ํ๊ณ ์๋ฒ๊ฐ ์ด์ '์๋ต'ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํํ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- REST API๋ HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ธฐ์, ๊ฐ์ข
HTTP ๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ ํ์คํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.