44์žฅ REST API

REST๋Š” HTTP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์„ ๊ทœ์ •ํ•œ ์•„ํ‚คํ…์ฒ˜.

REST API๋Š” REST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค API๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•จ.

REST๋Š” ์˜ 2000๋…„ ๋…ผ๋ฌธ์—์„œ ์ฒ˜์Œ ์†Œ๊ฐœ๋˜์—ˆ๋‹ค. ๋ฐœํ‘œ ๋‹น์‹œ์˜ ์›น์ด HTTP๋ฅผ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์„ ๋ณด๊ณ  HTTP ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜๋กœ์„œ REST๋ฅผ ์†Œ๊ฐœํ–ˆ๊ณ  ์ด๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ์˜๋„์— ๋งž๊ฒŒ ๋””์ž์ธํ•˜๋„๋ก ์œ ๋„ํ•˜์˜€๋‹ค. REST์˜ ๊ธฐ๋ณธ ์›์น™์„ ์„ฑ์‹คํžˆ ์ง€ํ‚จ ์„œ๋น„์Šค ๋””์ž์ธ์„ RESTful์ด๋ผ ํ‘œํ˜„ํ•œ๋‹ค.

44.1 REST API์˜ ๊ตฌ์„ฑ

REST API๋Š” ์ž์›, ํ–‰์œ„, ํ‘œํ˜„์˜ 3๊ฐ€์ง€ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. REST๋Š” ์ž์ฒด ํ‘œํ˜„ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด REST API ๋งŒ์œผ๋กœ HTTP ์š”์ฒญ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž์› Resource - URI

ํ–‰์œ„ Verb - HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ

ํ‘œํ˜„ Representations - ํŽ˜์ด๋กœ๋“œ

44.2 REST API ์„ค๊ณ„ ์›์น™

REST์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ๋ณธ์ ์ธ ์›์น™์€ 2๊ฐ€์ง€๋‹ค.

  1. URI๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ํ‘œํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

URI๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์ค‘์ ์„ ๋‘์–ด์•ผ ํ•œ๋‹ค. ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์€ ๋™์‚ฌ๋ณด๋‹ค ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฆ„์— get๊ณผ ๊ฐ™์€ ํ–‰์œ„์˜ ํ‘œํ˜„์ด ๋“ค์–ด๊ฐ€์„œ๋Š” ์•ˆ๋œ๋‹ค.

# bad
GET /getTodos/1
GET /todos/show/1

# good
GET /todos/1

  1. ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ–‰์œ„๋Š” HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์˜ ์ข…๋ฅ˜์™€ ๋ชฉ์ ์„ ์•Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฃผ๋กœ 5๊ฐ€์ง€ ์š”์ฒญ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CRUD๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ
์ข…๋ฅ˜
๋ชฉ์ 
ํŽ˜์ด๋กœ๋“œ

GET

index/retrieve

๋ชจ๋“ /ํŠน์ • ๋ฆฌ์†Œ์Šค ์ทจ๋“

X

POST

create

๋ฆฌ์†Œ์Šค ์ƒ์„ฑ

O

PUT

replace

๋ฆฌ์†Œ์Šค์˜ ์ „์ฒด ๊ต์ฒด

O

PATCH

modify

๋ฆฌ์†Œ์Šค์˜ ์ผ๋ถ€ ์ˆ˜์ •

O

DELETE

delete

๋ชจ๋“ /ํŠน์ •๋ฆฌ์†Œ์Šค ์‚ญ์ œ

X

43.3 JSON Server๋ฅผ ์ด์šฉํ•œ REST API ์‹ค์Šต

43.3.1 JSON Server ์„ค์น˜

P.832

43.3.2 db.json ํŒŒ์ผ ์ƒ์„ฑ

P.832 - P.833

43.3.3 JSON Server ์‹คํ–‰

P.833 - P.834

43.3.4 GET ์š”์ฒญ

P.834 - P.836

43.3.5 POST ์š”์ฒญ

P.837 - P.838

43.3.6 PUT ์š”์ฒญ

P.838 - P.839

43.3.7 PATCH ์š”์ฒญ

P.839 - P.840

43.3.8 DELETE ์š”์ฒญ

P.840 - P.841

Last updated

Was this helpful?