[CS] API(Application Programming Interface)๋?
by rlaehddnd0422API ๋?
API(Application Programming Interface)๋ ๋ ์ด์์ ์ปดํจํฐ๊ฐ ์๋ก ํต์ ํ๋ ๋ฐฉ๋ฒ์ด์, ์ปดํจํฐ ์ฌ์ด์ ์ค๊ณ ๊ณ์ธต์ ๋ปํฉ๋๋ค.
- Application : ํน์ ์ ๋ฌด๋ฅผ ์ํํ๊ธฐ ์ํ ์์ฉ ์ํํธ์จ์ด
- Programming : ์ปดํจํฐ์ ๋ถ์ฌํ๋ ๋ช ๋ น์ ๋ง๋๋ ์์
- Interface : ์ฌ๋ฌผ๊ณผ ์ฌ๋ฌผ ์ฌ์ด ๋๋ ์ฌ๋ฌผ๊ณผ ์ธ๊ฐ ์ฌ์ด์ ๊ฒฝ๊ณ์์ ์๋ก ์ํตํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๋งค๊ฐ์ฒด
์ข ํฉํ๋ฉด ์์ฉ ์ํํธ์จ์ด๋ฅผ ํตํด ํน์ ์์ ์ ์ํํ๊ธฐ ์ํด ํ์ํ ๋ฐ์ดํฐ ์ ์ก ํต์ ์์ ์ปดํจํฐ(์๋ฒ)์ ์ฌ์ฉ์(ํด๋ผ์ด์ธํธ) ์ฌ์ด์ ๋ฐ์ดํฐ ์ ์ก ํต์ ์ ์ํ ๋งค๊ฐ์ฒด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ์กฐ๊ธ ๋ ์ฝ๊ฒ ๋งํ์๋ฉด, API๋ ํ๋ก๊ทธ๋จ๋ค์ด ์๋ก ์ํธ์์ฉํ๋ ๊ฒ์ ๋์์ฃผ๋ ๋งค๊ฐ์ฒด๋ก ๋ณผ ์ ์์ต๋๋ค.
API์ ์ญํ
- ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์ค๊ฐ์์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ํตํ๊ธฐ ์ํ ๊ท์น์ ์ ํฉ๋๋ค.
- API๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ ๋ฌ ๋ฐ์ ์์ฒญ์, ์๋ฒ์ ์ ๋ฌํ์ฌ ์ฒ๋ฆฌํ๊ธฐ์ ์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๊ฐ ์ฒ๋ฆฌํ๊ธฐ ์ฉ์ดํ๊ฒ ๋ง์ถ๊ธฐ๋ ํ๊ณ , ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ , ๋ค์ ์๋ฒ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ค์ ์ ๋ฌํด์ฃผ๋ ์ค๊ณ์ ์ญํ ์ ํฉ๋๋ค.
API์ ์ฅ์
API๋ฅผ ์ฌ์ฉํ๋ฉด ๋ง์ ์ด์ ๋ค์ด ์์ต๋๋ค.
- API ์ ๊ณต์๋ ์๋น์ค์ ์ค์ํ ๋ถ๋ถ์ ๋๋ฌ๋ด์ง ์์๋ ๋ฉ๋๋ค.
- ์๋ฒ ์ ์ฅ์์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋, ํ ์ด๋ธ ์ ๋ณด, ์๋ฒ ๋ด๋ถ์์ ์ฌ์ฉํ๋ ์ ๋ณด๋ค์ ์ธ๋ถ์ ์ผ๋ก ๋ ธ์ถํ์ง ์๊ฒ ํจ์ผ๋ก์จ, ๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
- ๋ฐ๋๋ก ํด๋ผ์ด์ธํธ ์ ์ฅ์์๋ ์๋ฒ๊ฐ ํด๋น ์๋น์ค๋ฅผ ์ด๋ป๊ฒ ์ ๊ณตํ๋์ง์ ๋ํ ์ฝ๋๋ ์๋ฒ ๋ด๋ถ ์ ๋ณด๋ฅผ ์ ํ์ ์์ด, ์ฌ์ฉ์๊ฐ ํ์๋ก ํ๋ ์ ๋ณด๋ค์ ๋ฐ์ ์ ์์ต๋๋ค.
API์ ์ข ๋ฅ
1. private API
- private API๋ ๋ด๋ถ API๋ก, ์ธ๋ถ์ ๋ ธ์ถ๋์ง ์์ API๋ฅผ ์๋ฏธํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์ค์ ํ๊ฒ ํ๋ฉฐ, API ๊ฐ๋ฐ์๊ฐ ์์ฒด ์ ํ๊ณผ ์๋น์ค๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๋ด๋ถ์ ์ผ๋ก ๋ง๋๋ API๋ก 3์์๊ฒ ๋ ธ์ถ๋์ง ์์ต๋๋ค.
2. public API
- ์ผ๋ฐ์ ์ธ API๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ชจ๋์๊ฒ ๊ณต๊ฐ๋ฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์ ์ฝ, ์ ํ ์์ด ์ ๊ทผํ ์ ์๋ ๊ฒ์ด ํน์ง์ด์ง๋ง, ๋ง์ ํธ๋ํฝ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ณ์ ๋น ํ๋ฃจ ์์ฒญ์์ ์ ํ์ ๊ฑธ์ด๋๊ธฐ๋ ํฉ๋๋ค.
3. parter API
- ๊ธฐ์ ์ด ๋ฐ์ดํฐ ๊ณต์ ์ ๋์ํ๋ ํน์ ์ธ๋ค๋ง ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ๋ฐํ๋ API๋ก, ๋น์ฆ๋์ค ๊ด๊ณ์์ ์ฌ์ฉ๋๋ ํธ์ด๋ฉฐ, ์ข ์ข ํํธ๋ ํ์ฌ๊ฐ ์ํํธ์จ์ด ํตํฉ์ ์ํด ๋ง๋๋ API
REST API๋?
- A๋ผ๋ ๊ฐ๋ฐ์๊ฐ ๋ง๋ API๋ฅผ B๋ผ๋ ๊ฐ๋ฐ์๋ ์ดํดํ๊ธฐ ์ด๋ ค์ด ๊ฒ์ฒ๋ผ API๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ ๊ฐ๋ฐ์๋ง๋ค ์ํต์ ๊ท์น๊ณผ ๋ฉ๋ด์ผ ๋ฑ์ด ๋ฌ๋ผ ๊ฒช๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ API๋ ์ฒด๊ณ๊ฐ ํ์ํ๋ค๋ ๊ด์ ์ผ๋ก ๋์จ ๋ฐฉ๋ฒ์ด REST API๋ก, API๋ฅผ ๋ง๋ค ๋ ์ง์ผ์ผ ํ ์ฝ์๋ค์ ๊ฐ๋ฐ์๋ค๋ผ๋ฆฌ ๊ท์นํ ํด๋์ API์ ๋๋ค.
* REST API์์ REST๋ Representational State Transfer์ ์ฝ์.
REST API - Request
๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๋, HTTP URI๋ก ์ด๋ค ์์์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ป์ ๊ฒ์ธ์ง ํ์ํด ์ฃผ์ด์ผ ํ๋๋ฐ, ์ด ๋ HTTP ๋ฉ์๋๋ฅผ ํตํด ํด๋น ์์์ ๋ํ ํ์๋ฅผ ๊ท์น์ผ๋ก ์ ํด๋์์ต๋๋ค.
๊ธฐ๋ณธ ๊ท์น
- URI๋ ์ ๋ณด์ ์์์ ํํํด์ผ ํ๋ค
- ์์์ ๋ํ ํ์๋ HTTP Method (GET, POST, PUT, DELETE ๋ฑ)์ผ๋ก ํํํ๋ค
๋ฉ์๋ ์ข ๋ฅ
- GET : ์ฝ์ด์ค๊ธฐ ( ex) ์น ํ์ด์ง์์ ๊ธ์ ์ฝ์ด์ค๋ ์์ฒญ )
- POST : ์ฐ๊ธฐ ( ex) ์น ํ์ด์ง์ ๊ธ์ ์์ฑํ๋ ์์ฒญ )
- DELETE : ์ญ์ ( ex) ์น ํ์์ง์์ ๊ธ์ ์ญ์ ํ๋ ์์ฒญ )
- PUT / PATCH : ์์ ( ex) ์น ํ์ด์ง์์ ๊ธ์ ์์ ํ๋ ์์ฒญ )
REST API - Response
ํ์์ ๋ํ ์๋ต์ ํํ์ผ๋ก JSON์ผ๋ก ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด ๋๋ถ๋ถ.
Restful ํ๊ธฐ ์ํ ๊ฐ๋ฐ ์์น
Restfulํ๋ค๋ ๊ฒ์ REST API๋ฅผ REST ๋ต๊ฒ ์ฐ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก, ๋๊ตฐ๊ฐ ๊ณต์์ ์ผ๋ก ๋ฐํํ ๊ฒ์ ์๋์ง๋ง ์ ํด์ง ๊ท์น์ด ์์ต๋๋ค.
1. ์์์ ์๋ณํ ์ ์์ด์ผ ํ๋ค.
- URL(Uniform Resource Locator) ๋ง์ผ๋ก ๋ด๊ฐ ์ด๋ค ์์์ ์ ์ดํ๋ ค๊ณ ํ๋์ง ์ ์ ์์ด์ผ ํฉ๋๋ค. ์์์ ์ ์ดํ๊ธฐ ์ํด์, ์์์ ์์น๋ ๋ฌผ๋ก ์์์ ์ข ๋ฅ๊น์ง ์ ์ ์์ด์ผ ํ๋ค๋ ์๋ฏธ
- Server๊ฐ ์ ๊ณตํ๋ ์ ๋ณด๋ JSON ์ด๋ XML ํํ๋ก HTTP body์ ํฌํจํ์ฌ ์ ์ก.
2. ํ์๋ ๋ช ์์ ์ด์ด์ผ ํ๋ค.
- REST๋ ์ํคํ ์ณ ํน์ ๋ฐฉ๋ฒ๋ก ๊ณผ ๋น์ทํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ๋ฐฉ์์ ์ฌ์ฉํด์ผ ํ๋ค๊ณ ๊ฐ์ ์ ์ด์ง๋ ์์ต๋๋ค๋ง (GET์ ์ด์ฉํด์ UPDATE์ DELETE๋ฅผ ํด๋ ๋๊ธด ํจ) ํ์(๋ฉ์๋)๋ฅผ ๋ช ์์ ์ผ๋ก ์ฌ์ฉํด์ผ Restfulํ๋ค๊ณ ํ ์ ์์ต๋๋ค.
3. ์๊ธฐ ์์ ์ ์ด์ด์ผ ํ๋ค.
- ๋ฐ์ดํฐ์ ๋ํ ๋ฉํ์ ๋ณด๋ง ๊ฐ์ง๊ณ ๋ ์ด๋ค ์ข ๋ฅ์ ๋ฐ์ดํฐ์ธ์ง, ๋ฐ์ดํฐ๋ฅผ ์ํด์ ์ด๋ค ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํ ํด์ผ ํ๋์ง๋ฅผ ์ ์ ์์ด์ผ ํฉ๋๋ค.
- ์ฆ, w๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด์, ๋ฐ์ดํฐ ์๋ณธ์ ์ฝ์ด์ผ ํ๋ค๋ฉด ์๊ธฐ ์์ ์ ์ด์ง ๋ชปํ๋ค
4. HATEOS (Hypermedia as the Engine of Application State)
- ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํด ์๋ต์ ํ ๋, ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋งํฌ๋ฅผ ํฌํจํ ์ ์์ด์ผ ํ๋ค.
- REST๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ปดํฌ๋ํธ๋ค์ ์์ฝ๊ฒ ์ฐ๊ฒฐํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก๋ ์ฌ์ฉ๋๋ค. ๋ฐ๋ผ์ ์๋ก ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค์ ์ ์ฐํ๊ฒ ์ฐ๊ฒฐํ๊ธฐ ์ํด์ , ๋์จํ ์ฐ๊ฒฐ์ ๋ง๋ค์ด์ค ๊ฒ์ด ํ์ํ๋ค.
- ์ด๋ ์ฌ์ฉ๋๋ ๊ฒ์ด ๋ฐ๋ก ๋งํฌ์ด๋ค. ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์์ฉ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ดํผ ๋งํฌ๋ฅผ ์ ๊ณตํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ด ํ์ดํผ ๋งํฌ๋ฅผ ํตํด์ ์ ์ฒด ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋๋ฉฐ HATEOAS๋ ์๋ฒ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์งํํ ์ ์๋๋ก ์๋ฒ์ ์๋ฒ, ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ๋ถ๋ฆฌ ํ ์ ์๊ฒ ํ๋ค.
RestAPI์ ๋จ์
- REST๋ point-to-point ํต์ ๋ชจ๋ธ์ ๊ธฐ๋ณธ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์, ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ์ ๋งบ๊ณ ์ํธ์์ฉ ํด์ผํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ์๋ ์ ๋นํ์ง ์์ต๋๋ค.
- REST๋ URI, HTTP ์ด์ฉํ ์ํคํ ์ฒ๋ง ๋ฐฉ๋ฒ์ ๋ํ ๋ด์ฉ๋ง์ ๋ด๊ณ ์๊ณ , ๋ณด์๊ณผ ํต์ ๊ท์ฝ ์ ์ฑ ๊ฐ์ ๊ฒ์ ์ ํ ๋ค๋ฃจ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ํต์ ๊ณผ ์ ์ฑ ์ ๋ํ ์ค๊ณ์ ๊ตฌํ์ ๋๋งก์์ ์งํํด์ผ ํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
'๐ CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS] ํด๋ผ์ฐ๋ ์ปดํจํ ์๋น์ค์ ์ข ๋ฅ - Iaas, Paas, Saas (0) | 2024.04.01 |
---|---|
[CS] ํด๋ผ์ฐ๋ ์๋น์ค ๋ฐฐํฌ ๋ฐฉ์์ ๋ณํ ๊ณผ์ (0) | 2024.03.28 |
[CS] XML(eXtensible MarkUp Language)์ด๋? (0) | 2024.03.26 |
[CS] Json์ ์ง๋ ฌํ(Serialization), ์ญ์ง๋ ฌํ(Deserialization) (0) | 2024.03.26 |
[์ด์์ฒด์ /์ปดํจํฐ ๊ตฌ์กฐ] ์ปดํจํฐ ํ๋์จ์ด์ ๊ตฌ์ฑ์์ (0) | 2023.08.14 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422