IT๊ธฐ์ดˆ

REST API๋ž€ – GET, POST, PUT, DELETE ์™„์ „ ์ •๋ฆฌ

๐Ÿฅ„ํ…Œํฌ ํ•œ ์Šคํ‘ผ 2026. 5. 30. 18:52

๋ชฉ์ฐจ

  1. API๋ฅผ ๋ฐฐ์› ๋Š”๋ฐ REST๋Š” ๋˜ ๋ญ”๊ฐ€?
  2. REST API์˜ ์ •์˜
  3. REST์˜ ํ•ต์‹ฌ ์›์น™
  4. HTTP ๋ฉ”์„œ๋“œ ์™„์ „ ์ •๋ฆฌ – GET, POST, PUT, DELETE
  5. REST API URL ์„ค๊ณ„ ๋ฐฉ์‹
  6. REST API ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ๊ตฌ์กฐ
  7. REST API๊ฐ€ ์•„๋‹Œ ๊ฒƒ๋“ค – SOAP์™€์˜ ์ฐจ์ด
  8. ์ •๋ฆฌ ๋ฐ ๋‹ค์Œ ๋‹จ๊ณ„

1. API๋ฅผ ๋ฐฐ์› ๋Š”๋ฐ REST๋Š” ๋˜ ๋ญ”๊ฐ€?

API๊ฐ€ "์„œ๋กœ ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์†Œํ†ตํ•˜๋Š” ์ฐฝ๊ตฌ"๋ผ๋Š” ๊ฒƒ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธ€์„ ์ฝ๋‹ค ๋ณด๋ฉด ๋‹จ์ˆœํžˆ "API"๊ฐ€ ์•„๋‹ˆ๋ผ "REST API", "RESTful API"๋ผ๋Š” ํ‘œํ˜„์„ ๋” ์ž์ฃผ ๋งŒ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

REST๋Š” API๋ฅผ ๋งŒ๋“œ๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์›น ์„œ๋น„์Šค์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” API ์„ค๊ณ„ ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์—, ์›น ๊ฐœ๋ฐœ์„ ๋ฐฐ์šด๋‹ค๋ฉด REST API ๊ฐœ๋…์€ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2. REST API์˜ ์ •์˜

**REST(Representational State Transfer)**๋Š” ์›น์˜ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ์ด ํ•„๋”ฉ์ด 2000๋…„์— ์ œ์•ˆํ•œ API ์„ค๊ณ„ ์›์น™์ž…๋‹ˆ๋‹ค. REST ์›์น™์„ ๋”ฐ๋ฅด๋Š” API๋ฅผ REST API ๋˜๋Š” RESTful API๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

REST API๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. URL๋กœ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ์ง€ ํ‘œํ˜„ํ•˜๊ณ , HTTP ๋ฉ”์„œ๋“œ(GET, POST, PUT, DELETE ๋“ฑ)๋กœ ์–ด๋–ค ํ–‰๋™์„ ํ• ์ง€ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

3. REST์˜ ํ•ต์‹ฌ ์›์น™

REST API๊ฐ€ ๋”ฐ๋ฅด๋Š” ์ฃผ์š” ์›์น™์„ ์•Œ์•„๋‘๋ฉด ์™œ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ท ์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค: URL๊ณผ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ฐ€ ๋งŒ๋“ค์–ด๋„ ๋น„์Šทํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.

๋ฌด์ƒํƒœ(Stateless): ๊ฐ ์š”์ฒญ์€ ๋…๋ฆฝ์ ์ด๋ฉฐ, ์„œ๋ฒ„๋Š” ์ด์ „ ์š”์ฒญ์˜ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ •๋ณด๋Š” ๋งค ์š”์ฒญ๋งˆ๋‹ค ํ•จ๊ป˜ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ณ„์ธต ๊ตฌ์กฐ: ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์‹ ์ด ์„œ๋ฒ„์™€ ์ง์ ‘ ํ†ต์‹ ํ•˜๋Š”์ง€, ์ค‘๊ฐ„ ์„œ๋ฒ„(ํ”„๋ก์‹œ, ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ)๋ฅผ ๊ฑฐ์น˜๋Š”์ง€ ์•Œ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์บ์‹œ ๊ฐ€๋Šฅ: ์‘๋‹ต ๋ฐ์ดํ„ฐ๋Š” ์บ์‹œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. HTTP ๋ฉ”์„œ๋“œ ์™„์ „ ์ •๋ฆฌ – GET, POST, PUT, DELETE

REST API์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด ๋ฐ”๋กœ HTTP ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ URL์ด๋ผ๋„ ์–ด๋–ค ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋™์ž‘์„ ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”์„œ๋“œ์—ญํ• ๋น„์œ 
GET ๋ฐ์ดํ„ฐ ์กฐํšŒ ๋„์„œ๊ด€์—์„œ ์ฑ…์„ ๋นŒ๋ ค๋ณด๊ธฐ
POST ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋„์„œ๊ด€์— ์ƒˆ ์ฑ… ๋“ฑ๋กํ•˜๊ธฐ
PUT ๋ฐ์ดํ„ฐ ์ „์ฒด ์ˆ˜์ • ์ฑ…์˜ ๋‚ด์šฉ ์ „์ฒด๋ฅผ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๊ต์ฒดํ•˜๊ธฐ
PATCH ๋ฐ์ดํ„ฐ ์ผ๋ถ€ ์ˆ˜์ • ์ฑ…์˜ ํŠน์ • ํŽ˜์ด์ง€๋งŒ ์ˆ˜์ •ํ•˜๊ธฐ
DELETE ๋ฐ์ดํ„ฐ ์‚ญ์ œ ์ฑ…์„ ๋„์„œ๊ด€์—์„œ ํ๊ธฐํ•˜๊ธฐ

GET – ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ช‡ ๋ฒˆ์„ ํ˜ธ์ถœํ•ด๋„ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ URL์„ ์ž…๋ ฅํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ GET ์š”์ฒญ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

POST – ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค ๋•Œ ์„œ๋ฒ„์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ํšŒ์›๊ฐ€์ž…, ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ, ์ฃผ๋ฌธ ์ƒ์„ฑ ๋“ฑ์ด ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์š”์ฒญ์„ ๋ฐ˜๋ณตํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๋ณต์œผ๋กœ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PUT – ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ์šด ๋‚ด์šฉ์œผ๋กœ ์™„์ „ํžˆ ๊ต์ฒดํ•˜๋Š” ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•˜์ง€ ์•Š์€ ํ•„๋“œ๋„ ๋ชจ๋‘ ํฌํ•จํ•ด์„œ ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

PATCH – ๋ฐ์ดํ„ฐ ์ผ๋ถ€๋งŒ ์ˆ˜์ •ํ•  ๋•Œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ ์ค‘ ์ผ๋ถ€ ํ•„๋“œ๋งŒ ์ˆ˜์ •ํ•˜๋Š” ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝํ•  ํ•„๋“œ๋งŒ ๋ณด๋‚ด๋ฉด ๋ฉ๋‹ˆ๋‹ค. PUT๊ณผ ํ˜ผ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Šต๋‹ˆ๋‹ค.

DELETE – ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์„œ๋ฒ„์˜ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œ, ๊ณ„์ • ํƒˆํ‡ด ๋“ฑ์ด ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

5. REST API URL ์„ค๊ณ„ ๋ฐฉ์‹

REST API URL์€ ๋ช…์‚ฌ๋กœ ๋ฆฌ์†Œ์Šค(์ž์›)๋ฅผ ํ‘œํ˜„ํ•˜๊ณ , HTTP ๋ฉ”์„œ๋“œ๋กœ ํ–‰๋™์„ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€์„ ๊ด€๋ฆฌํ•˜๋Š” API URL์„ ์„ค๊ณ„ํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก์„ ์กฐํšŒํ•  ๋•Œ๋Š” GET ๋ฐฉ์‹์œผ๋กœ /posts์— ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ๊ฒŒ์‹œ๊ธ€์„ ์กฐํšŒํ•  ๋•Œ๋Š” GET ๋ฐฉ์‹์œผ๋กœ /posts/1์ฒ˜๋Ÿผ ID๋ฅผ URL์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•  ๋•Œ๋Š” POST ๋ฐฉ์‹์œผ๋กœ /posts์— ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์‹œ๊ธ€์„ ์ˆ˜์ •ํ•  ๋•Œ๋Š” PUT ๋ฐฉ์‹์œผ๋กœ /posts/1์— ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์‹œ๊ธ€์„ ์‚ญ์ œํ•  ๋•Œ๋Š” DELETE ๋ฐฉ์‹์œผ๋กœ /posts/1์— ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

REST API URL ์„ค๊ณ„ ์‹œ ์ง€์ผœ์•ผ ํ•  ๊ทœ์น™์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค. URL์—๋Š” ๋™์‚ฌ ๋Œ€์‹  ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. /getPosts ๋Œ€์‹  /posts์ฒ˜๋Ÿผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹จ์–ด ๊ตฌ๋ถ„์—๋Š” ํ•˜์ดํ”ˆ(-)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์Šฌ๋ž˜์‹œ(/)๋Š” ๋ถ™์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

6. REST API ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ๊ตฌ์กฐ

REST API๋Š” ์ฃผ๋กœ JSON ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์š”์ฒญ ์˜ˆ์‹œ๋กœ, ์ƒˆ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” POST ์š”์ฒญ์˜ ๋ณธ๋ฌธ(body)์€ ์•„๋ž˜์™€ ๊ฐ™์€ JSON ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

{
  "name": "ํ™๊ธธ๋™",
  "email": "hong@example.com",
  "password": "1234"
}

์‘๋‹ต ์˜ˆ์‹œ๋กœ, ์„œ๋ฒ„๋Š” ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ HTTP ์ƒํƒœ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ JSON์œผ๋กœ ๋Œ๋ ค์ค๋‹ˆ๋‹ค.

 
{
  "id": 1,
  "name": "ํ™๊ธธ๋™",
  "email": "hong@example.com",
  "createdAt": "2026-05-01T09:00:00Z"
}

HTTP ์ƒํƒœ ์ฝ”๋“œ๋กœ ์š”์ฒญ ๊ฒฐ๊ณผ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 200์€ ์„ฑ๊ณต, 201์€ ์ƒ์„ฑ ์„ฑ๊ณต, 400์€ ์ž˜๋ชป๋œ ์š”์ฒญ, 401์€ ์ธ์ฆ ํ•„์š”, 404๋Š” ๋ฆฌ์†Œ์Šค ์—†์Œ, 500์€ ์„œ๋ฒ„ ์˜ค๋ฅ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

7. REST API๊ฐ€ ์•„๋‹Œ ๊ฒƒ๋“ค – SOAP์™€์˜ ์ฐจ์ด

REST ์ด์ „์—๋Š” **SOAP(Simple Object Access Protocol)**์ด๋ผ๋Š” ๋ฐฉ์‹์ด ๋งŽ์ด ์‚ฌ์šฉ๋์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฐฉ์‹์„ ๊ฐ„๋‹จํžˆ ๋น„๊ตํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ถ„REST APISOAP
๋ฐ์ดํ„ฐ ํ˜•์‹ JSON (์ฃผ๋กœ) XML
์†๋„ ๋น ๋ฆ„ ๋А๋ฆผ
๋ณต์žก๋„ ๊ฐ„๋‹จ ๋ณต์žก
ํ˜„์žฌ ์‚ฌ์šฉ ๋Œ€๋ถ€๋ถ„์˜ ์›น ์„œ๋น„์Šค ๊ธˆ์œต, ๊ณต๊ณต๊ธฐ๊ด€ ์ผ๋ถ€

ํ˜„์žฌ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์›น·์•ฑ ์„œ๋น„์Šค๊ฐ€ REST API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, SOAP๋Š” ์ผ๋ถ€ ๊ธˆ์œต๊ธฐ๊ด€์ด๋‚˜ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์—์„œ ์œ ์ง€๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

8. ์ •๋ฆฌ ๋ฐ ๋‹ค์Œ ๋‹จ๊ณ„

์˜ค๋Š˜ ๋ฐฐ์šด ํ•ต์‹ฌ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • REST API๋Š” HTTP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ URL๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ๋ฉ”์„œ๋“œ๋กœ ํ–‰๋™์„ ํ‘œํ˜„ํ•˜๋Š” API ์„ค๊ณ„ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • GET์€ ์กฐํšŒ, POST๋Š” ์ƒ์„ฑ, PUT์€ ์ „์ฒด ์ˆ˜์ •, PATCH๋Š” ๋ถ€๋ถ„ ์ˆ˜์ •, DELETE๋Š” ์‚ญ์ œ๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • URL์€ ๋ช…์‚ฌ๋กœ ์„ค๊ณ„ํ•˜๊ณ , ํ–‰๋™์€ HTTP ๋ฉ”์„œ๋“œ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  • REST API๋Š” ์ฃผ๋กœ JSON ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š” JSON์ด ๋ฌด์—‡์ธ์ง€, ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฃผ๊ณ ๋ฐ›๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.