๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š Computer Science/ETC

API

by hyebin (Helia) 2025. 11. 7.
๋ฐ˜์‘ํ˜•

API (Application Programming Interface)

1. ๊ฐœ๋…

API๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธํ•จ.

์ฆ‰, ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ•ด์ง„ ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญํ•˜๊ณ  ์‘๋‹ต๋ฐ›๊ธฐ ์œ„ํ•œ ๊ทœ์•ฝ(Protocol) ์ž„.

์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๊ฐ„ ํ†ต์‹ ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ๊ธฐ๋Šฅ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋จ.


2. ํŠน์ง•

  • ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ๋ฐ ๊ธฐ๋Šฅ ํ˜ธ์ถœ์„ ํ‘œ์ค€ํ™”ํ•จ
  • ๋‚ด๋ถ€ ๋กœ์ง์„ ์ˆจ๊ธฐ๊ณ , ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์™ธ๋ถ€์— ๊ณต๊ฐœํ•จ (์บก์Аํ™” ๊ฐœ๋…๊ณผ ์œ ์‚ฌ)
  • ํ”Œ๋žซํผ๊ณผ ์–ธ์–ด์— ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•จ
  • JSON, XML ๋“ฑ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
  • ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response) ๊ตฌ์กฐ๋กœ ๋™์ž‘

3. ๊ตฌ์„ฑ ์š”์†Œ

๊ตฌ์„ฑ ์š”์†Œ ์„ค๋ช…
Endpoint API๊ฐ€ ์š”์ฒญ์„ ๋ฐ›๋Š” URL ์ฃผ์†Œ
Method ๋™์ž‘์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹ (GET, POST, PUT, DELETE ๋“ฑ)
Header ์š”์ฒญ/์‘๋‹ต์˜ ๋ถ€๊ฐ€ ์ •๋ณด (Content-Type, ์ธ์ฆ ํ† ํฐ ๋“ฑ)
Body ์‹ค์ œ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ (๋ณดํ†ต JSON ํ˜•ํƒœ)
Status Code ์š”์ฒญ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฝ”๋“œ (200, 404, 500 ๋“ฑ)

4. ๋™์ž‘ ์›๋ฆฌ ์˜ˆ์‹œ

์š”์ฒญ → ์ฒ˜๋ฆฌ → ์‘๋‹ต ํ๋ฆ„

GET /api/users/1
Response:
{
  "id": 1,
  "name": "Hyebin",
  "role": "Backend Developer"
}

5. API ์ข…๋ฅ˜

๊ตฌ๋ถ„ ์„ค๋ช… ์˜ˆ์‹œ
Open API ์™ธ๋ถ€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ณต๊ฐœ๋œ API ์นด์นด์˜ค๋งต API, ๋„ค์ด๋ฒ„ ๋กœ๊ทธ์ธ API
Private API ๋‚ด๋ถ€ ์‹œ์Šคํ…œ ๊ฐ„ ํ†ต์‹ ์šฉ ์‚ฌ๋‚ด ๊ฒฐ์ œ ์‹œ์Šคํ…œ, ์ธ์ฆ ์„œ๋ฒ„ API
Partner API ํŠน์ • ํŒŒํŠธ๋„ˆ ๊ธฐ์—…์—๊ฒŒ๋งŒ ์ œ๊ณต ๊ฒฐ์ œ ๋Œ€ํ–‰์‚ฌ API, ๋ฌผ๋ฅ˜ ์—ฐ๋™ API

6. REST API

REST (Representational State Transfer) ๋Š” ์›น ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๋Š” API ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ๋กœ,

๋ฆฌ์†Œ์Šค ์ค‘์‹ฌ์˜ URL ์„ค๊ณ„์™€ HTTP ํ‘œ์ค€ ๋ฉ”์„œ๋“œ(GET, POST, PUT, DELETE) ๋ฅผ ์‚ฌ์šฉํ•จ.

 

ํŠน์ง• ์š”์•ฝ

  • ์ž์›(Resource)์„ URI๋กœ ํ‘œํ˜„ (/users, /posts)
  • ์ƒํƒœ(STATE)๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๋ฌด์ƒํƒœ(Stateless) ๊ตฌ์กฐ
  • ์š”์ฒญ ๋ฐฉ์‹์— ๋”ฐ๋ผ CRUD ๋™์ž‘ ์ˆ˜ํ–‰
  • ์‘๋‹ต์€ ์ผ๋ฐ˜์ ์œผ๋กœ JSON ํ˜•์‹ ์‚ฌ์šฉ
Method ์—ญํ•  ์˜ˆ์‹œ
GET ๋ฐ์ดํ„ฐ ์กฐํšŒ /users
POST ๋ฐ์ดํ„ฐ ์ƒ์„ฑ /users
PUT ๋ฐ์ดํ„ฐ ์ˆ˜์ • /users/1
DELETE ๋ฐ์ดํ„ฐ ์‚ญ์ œ /users/1

7. API ํ†ต์‹  ์˜ˆ์‹œ (Client ↔ Server)

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŠน์ • URL๋กœ ์š”์ฒญ ๋ณด๋ƒ„ (GET /api/users)
  2. ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๋ฐ›์•„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
  3. ์„œ๋ฒ„๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ JSON์œผ๋กœ ์‘๋‹ต (200 OK)
  4. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œ

8. ๋ฉด์ ‘ ํฌ์ธํŠธ ์ •๋ฆฌ

  • API๋Š” ์‹œ์Šคํ…œ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค
  • ๋‚ด๋ถ€ ๋กœ์ง์„ ์ˆจ๊ธฐ๊ณ  ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์™ธ๋ถ€์— ์ œ๊ณต (์บก์Аํ™”)
  • REST API๋Š” HTTP ๊ธฐ๋ฐ˜์˜ ๊ฐ€์žฅ ๋ณดํŽธ์ ์ธ ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ
  • REST API ์„ค๊ณ„ ์‹œ ์ž์› ์ค‘์‹ฌ, ๋ช…ํ™•ํ•œ URI, ์ผ๊ด€๋œ ๊ทœ์น™์ด ์ค‘์š”
  • ์‘๋‹ต ๋ฐ์ดํ„ฐ๋Š” ๋Œ€๋ถ€๋ถ„ JSON ํฌ๋งท์œผ๋กœ ์ „๋‹ฌ
  • ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์š”์ฒญ ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ๋ช…ํ™•ํžˆ ์ „๋‹ฌ

ํ•ต์‹ฌ ์š”์•ฝ

API๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๊ฐ„์˜ ์†Œํ†ต์„ ์œ„ํ•œ ๊ทœ์•ฝ์ด๋ฉฐ,
REST API๋Š” HTTP ๊ธฐ๋ฐ˜์˜ ๋Œ€ํ‘œ์ ์ธ ์„ค๊ณ„ ๋ฐฉ์‹์œผ๋กœ,
์š”์ฒญ-์‘๋‹ต ๊ตฌ์กฐ์™€ JSON ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐํ•จ.

๋ฐ˜์‘ํ˜•

'๐Ÿ“š Computer Science > ETC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

XML  (0) 2025.10.29
JSON  (0) 2025.10.29