๐Ÿ—‚๏ธ API ๋ช…์„ธ์„œ

๊น€์ˆ˜์ง„ยท2025๋…„ 5์›” 27์ผ

API ๋ช…์„ธ๋ž€?

๋ฐฑ์—”๋“œ๊ฐ€ ์–ด๋–ค ๊ฒฝ๋กœ(Endpoint)๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์–ด๋–ค ๋ฐฉ์‹(Method)์œผ๋กœ ์š”์ฒญํ•ด์•ผ ํ•˜๋ฉฐ, ์š”์ฒญ/์‘๋‹ต์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”์ง€๋ฅผ ๋ฌธ์„œํ™”ํ•œ ๊ฒƒ์ด๋‹ค.

API ๋ช…์„ธ์„œ ๋‚ด์šฉ

1. ๐Ÿ”—Endpoint (URL ๊ฒฝ๋กœ)

API๋ฅผ ์–ด๋–ค ์ฃผ์†Œ๋กœ ์š”์ฒญํ• ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ์—ฌ๋Ÿฌ API๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์‹๋ณ„์ž ์—ญํ• ์„ ํ•œ๋‹ค.
์˜ˆ: /users, /posts/1, /login

์˜ˆ์‹œ:

GET /users
POST /login
DELETE /posts/{id}

2. ๐Ÿ“ฎHTTP Method (์š”์ฒญ ๋ฐฉ์‹)

์š”์ฒญ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€ ์˜๋ฏธํ•˜๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค.

Method์„ค๋ช…
GET์ •๋ณด ์กฐํšŒ
POST์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
PUT์ „์ฒด ์ˆ˜์ •
PATCH๋ถ€๋ถ„ ์ˆ˜์ •
DELETE๋ฐ์ดํ„ฐ ์‚ญ์ œ

์˜ˆ์‹œ:

POST /login โ†’ ๋กœ๊ทธ์ธ ์š”์ฒญ
GET /users โ†’ ์œ ์ € ๋ชฉ๋ก ์กฐํšŒ

3. ๐Ÿ“ฅRequest Parameters (์š”์ฒญ ๋ฐ์ดํ„ฐ)

ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ๋ฐฑ์—”๋“œ๋กœ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๋“ค์„ ์˜๋ฏธํ•œ๋‹ค.

์ข…๋ฅ˜์œ„์น˜์„ค๋ช…์˜ˆ์‹œ
Path ParameterURL ์•ˆ๊ฐ’์ด URL์— ํฌํ•จ๋จ/users/{id}
Query Parameter?key=valueํ•„ํ„ฐ๋ง/๊ฒ€์ƒ‰์šฉ/posts?userId=3
Request Bodybody์— ๋‹ด๊น€POST/PUT์— ์ฃผ๋กœ ์‚ฌ์šฉ{ "title": "์ œ๋ชฉ" }
Header๋ฉ”ํƒ€ ์ •๋ณด์ธ์ฆ ํ† ํฐ, ์–ธ์–ด ์„ค์ • ๋“ฑAuthorization: Bearer token

์˜ˆ์‹œ:

POST /login
Body:
{
  "email": "test@email.com",
  "password": "1234"
}

4. ๐Ÿ“คResponse (์‘๋‹ต ๋ฐ์ดํ„ฐ)

๋ฐฑ์—”๋“œ๊ฐ€ ํ”„๋ก ํŠธ์— ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ์ด๋‹ค.

์š”์†Œ์„ค๋ช…์˜ˆ์‹œ
Status Code์š”์ฒญ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ ์ˆซ์ž200, 400, 404, 500
Response Body์‹ค์ œ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ{ "name": "ํ™๊ธธ๋™" }

์˜ˆ์‹œ:

200 OK
{
  "id": 1,
  "name": "ํ™๊ธธ๋™",
  "email": "hong@example.com"
}

5. โš ๏ธError Cases (์—๋Ÿฌ ์ƒํ™ฉ ์ •์˜)

์‹คํŒจํ–ˆ์„ ๋•Œ ์–ด๋–ค ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •์˜์ด๋‹ค.

Status Code์˜๋ฏธ์˜ˆ์‹œ ๋ฉ”์‹œ์ง€
400์ž˜๋ชป๋œ ์š”์ฒญ"ํ•„์ˆ˜๊ฐ’ ๋ˆ„๋ฝ"
401์ธ์ฆ ์‹คํŒจ"๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค"
403๊ถŒํ•œ ์—†์Œ"์ ‘๊ทผ ๋ถˆ๊ฐ€"
404์กด์žฌํ•˜์ง€ ์•Š์Œ"์‚ฌ์šฉ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"
500์„œ๋ฒ„ ์˜ค๋ฅ˜"๋‚ด๋ถ€ ์„œ๋ฒ„ ์˜ค๋ฅ˜"

6. ๐Ÿงพ์˜ˆ์‹œ ์š”์ฒญ ๋ฐ ์‘๋‹ต (Example)

์‹ค์ œ ์‚ฌ์šฉํ•  ๋•Œ ์–ด๋–ค ์‹์œผ๋กœ ์š”์ฒญํ•˜๊ณ  ์–ด๋–ค ์‘๋‹ต์ด ์˜ค๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ์ƒ˜ํ”Œ์ด๋‹ค.

์˜ˆ์‹œ:

POST /login

์š”์ฒญ:
{
  "email": "kim@test.com",
  "password": "1234"
}

์‘๋‹ต:
{
  "accessToken": "abcdef12345",
  "userId": 7
}

0๊ฐœ์˜ ๋Œ“๊ธ€