์ „์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•œ ์ ์ด ์žˆ์ง€๋งŒ ์ตœ๊ทผ๋ฒ„์ „์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•ด ๋ณด์žํ•œ๋‹ค.

API?

API๋Š” application programming interface(์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค)์˜ ์•ฝ์ž๋‹ค.
๋ง์ด ๊ธธ์–ด์„œ ๊ทธ๋ ‡์ง€, ๋œป์€ ๋‹จ์ˆœํ•˜๋‹ค.
์„œ๋กœ ๋‹ค๋ฅธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)์ด ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐํŽ˜์ด์Šค๋‹ค.

Application : ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด
Interface : ๋‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ์„œ๋น„์Šค ๊ณ„์•ฝ


์ฆ‰ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ์„œ๋กœ์—๊ฒŒ ๋ถ€ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.


์˜ˆ์‹œ


์šฐ๋ฆฌ๊ฐ€ ํ•ธ๋“œํฐ์—์„œ โ€œ์นด์นด์˜ค ๋กœ๊ทธ์ธโ€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

๊ทธ ์ˆœ๊ฐ„ ํ•ธ๋“œํฐ์€ ์นด์นด์˜ค ์„œ๋ฒ„์—๊ฒŒ ์ด ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•ด์ค˜ ์ด๋ ‡๊ฒŒ ๋งํ•˜๋Š” ์…ˆ์ด๋‹ค.
์„œ๋ฒ„๋Š” ๊ฒ€์‚ฌ ํ›„ ์ด์—๋Œ€ํ•ด ๋กœ๊ทธ์ธ ์„ฑ๊ณต, ๋กœ๊ทธ์ธ ์‹คํŒจ๋กœ ๋Œ€๋‹ต์„ ํ•œ๋‹ค.

์ด ๊ณผ์ •์ด ๋ฐ”๋กœ ํด๋ผ์ด์–ธํŠธ(ํ•ธ๋“œํฐ) โ†” ์„œ๋ฒ„(์นด์นด์˜คํ†ก) ๊ตฌ์กฐ๋‹ค.

์ด์™ธ์—๋„ ํด๋ผ์ด์–ธํŠธ(ํ•ธ๋“œํฐ)๋Š” ๋ฉ”์„ธ์ง€ ์ „์†ก, ์นœ๊ตฌ ์ถ”๊ฐ€ ๋“ฑ ์ˆ˜ ๋งŽ์€ ์š”์ฒญ์„ ์„œ๋ฒ„(์นด์นด์˜คํ†ก)์—๊ฒŒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ๊ทธ๋•Œ๊ทธ๋•Œ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•ด์ค˜ํ•˜๋Š” ์‹์œผ๋กœ ์„œ๋ฒ„์—์„œ ๋Œ€์‘ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋ฏธ๋ฆฌ ์ •ํ•ด๋‘๋Š” ๊ฒƒ์ด๋‹ค.

๋กœ๊ทธ์ธ ์š”์ฒญ์€ ์ด๋Ÿฐ ํ˜•์‹์œผ๋กœ ๋ณด๋‚ด์„ธ์š”.
๋ฉ”์‹œ์ง€ ์ „์†ก์€ ์ด๋Ÿฐ ํ˜•์‹์œผ๋กœ ๋ณด๋‚ด์„ธ์š”.
์นœ๊ตฌ ๋ชฉ๋ก์€ ์ด ์ฃผ์†Œ๋กœ ์š”์ฒญํ•˜์„ธ์š”.

์ด๋ ‡๊ฒŒ ๊ฐ๊ฐ์˜ ์š”์ฒญ์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์ด ์ž˜ ์ „๋‹ฌ ๋ฐ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ฒด๊ณ„๊ฐ€ ๋ฐ”๋กœ API๋‹ค.

์ฆ‰, ์–ด๋– ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ •๋ณด๋ฅผ ์š”์ฒญํ•ด์•ผ ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿฌํ•œ ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ ์–ด๋– ํ•œ ํ˜•์‹์œผ๋กœ ๋ฌด์Šจ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ •๋ฆฌํ•œ ์ผ์ข…์˜ ์•ฝ์†์ด๋‹ค.

image


์ด๋ž˜๋„ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€๋ฉด ๋” ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

API๋Š” ์‹๋‹น์˜ ๋ฉ”๋‰ดํŒ์ด๋‹ค.
๊ณ ๊ฐ์€ ์ฃผ๋ฐฉ์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€, ์–ด๋–ป๊ฒŒ ์š”๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๋Š” ์ง€ ๋ชจ๋ฅธ๋‹ค.
ํ•˜์ง€๋งŒ ๋ฉ”๋‰ดํŒ์„ ๋ณด๋ฉด ๋ถˆ๊ณ ๊ธฐ ๋ฒ„๊ฑฐ, ์ฝœ๋ผ ๋“ฑ ์–ด๋–ค ๋ฉ”๋‰ด๊ฐ€ ์žˆ๋Š” ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
์ฃผ๋ฌธ ์‹œ์—๋„ โ€œ๋ถˆ๊ณ ๊ธฐ ๋ฒ„๊ฑฐ ํ•˜๋‚˜ ์ฃผ์„ธ์š”โ€ ์ด๋ ‡๊ฒŒ ์ฃผ๋ฌธ ํ•˜๋ฉด ๋์ด๋‹ค.
๋งŒ์•ฝ ๋ฉ”๋‰ดํŒ(API)๊ฐ€ ์—†๋‹ค? ์žฌ๋ฃŒ๊ฐ€ ์–ด๋””์žˆ๋Š”์ง€ ๋ถ€ํ„ฐ ์š”๋ฆฌ ๋ฐฉ๋ฒ•๊นŒ์ง€ ๋ฐฐ์›Œ์•ผํ•œ๋‹ค.. ๋„ˆ๋ฌด ์–ด์ง€์šด ์ƒํ™ฉ์ด๋‹ค ์ด๊ฑด,,

API์˜ ์ฃผ์š” ํŠน์ง•


์ฃผ์š” ํŠน์ง• ๋ช‡ ๊ฐ€์ง€๋งŒ ์‚ดํŽด ๋ณด์ž

๊ธฐ๋Šฅ ์ œ๊ณต


๋ง ๊ทธ๋Œ€๋กœ API๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ์™ธ๋ถ€์— ์ œ๊ณตํ•œ๋‹ค.
๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ, ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ, ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ๋“ฑ ์šฐ๋ฆฌ๋Š” ๊ทธ ๊ธฐ๋Šฅ์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ๋ชฐ๋ผ๋„ API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •๋ณด ์€๋‹‰


๋‚ด๋ถ€ ๋™์ž‘ ๋ฐฉ์‹์„ ๊ฐ์ถ”๊ณ , ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ/๊ธฐ๋Šฅ ๋งŒ์„ ๋…ธ์ถœ ์‹œํ‚จ๋‹ค.
๋กœ๊ทธ์ธ์„ ์˜ˆ์‹œ๋กœ ๋“ค๋ฉด ์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ด์ง€๋งŒ,
์„œ๋ฒ„ ๋‚ด๋ถ€์—์„œ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ ๋“ฑ ์—ฌ๋Ÿฌ ์ž‘์—…์ด ์ง„ํ–‰๋œ๋‹ค.
์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ์™ธ๋ถ€์— ๊ณต๊ฐœํ•˜์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ, ์ด๊ฒŒ ๋ฐ”๋กœ ์ •๋ณด ์€๋‹‰์ด๋‹ค.
์šฐ๋ฆฌ๋Š” ๋•๋ถ„์— ๋‚ด๋ถ€ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ์™ธ๋ถ€ ์‚ฌ์šฉ ๋ฐฉ์‹์€ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋‹ค.

ํ‘œ์ค€ํ™”๋œ ํ†ต์‹ 


API๋Š” ์•„๋ฌด ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.
HTTP / HTTPS, REST, GraphQL๊ณผ ๊ฐ™์€ ํ‘œ์ค€์„ ๋”ฐ๋ฅธ๋‹ค.
์ฆ‰ ์š”์ฒญ ๋ฐฉ์‹๊ณผ ์‘๋‹ต ํ˜•์‹์ด ์ •ํ•ด์ ธ ์žˆ๋‹ค.


GET : ์กฐํšŒ, POST : ์ƒ์„ฑ, JSON : ๋ฐ์ดํ„ฐ ํ˜•์‹


๊ฐ™์ด ํ†ต์‹  ๊ทœ์น™์ด ํ‘œ์ค€ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํšŒ์‚ฌ, ๋‹ค๋ฅธ ์–ธ์–ด, ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๋ผ๋ฆฌ๋„ ๋ฌธ์ œ์—†์ด ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค.

๊ฐœ๋ฐœ ํšจ์œจ ํ–ฅ์ƒ


API๋Š” ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด๋‘๋ฉด ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๋˜ํ•œ ํŒ€ ๊ฐœ๋ฐœ์—์„œ ๋™์‹œ์— ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ๊ฐœ๋ฐœ ์†๋„์™€ ์ƒ์‚ฐ์„ฑ์ด ํฌ๊ฒŒ ์˜ฌ๋ผ๊ฐ„๋‹ค.



๋ฐฉ๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” API์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด API๋Š” ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ๋งŒ๋“ค์–ด๋„ ๋ ๊นŒ?
๊ธฐ๋Šฅ๋งŒ ์ž˜ ๋™์ž‘ํ•˜๋ฉด ๋์ผ๊นŒ?

์‚ฌ์‹ค API์—๋„ ์„ค๊ณ„ ๋ฐฉ์‹์ด ์กด์žฌํ•œ๋‹ค. ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์ด ๋ฐ”๋กœ REST๋‹ค.


REST

REST(Representational State Transfer)๋Š” ์ž์›์„ ์ค‘์‹ฌ์œผ๋กœ URL์„ ์„ค๊ณ„ํ•˜๊ณ , HTTP ๋ฉ”์„œ๋“œ๋กœ ํ–‰์œ„๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” API ์„ค๊ณ„ ๋ฐฉ์‹์ด๋‹ค.
๋ฒŒ์จ ๋ง์ด ์–ด๋ ต๋‹ค..์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด

์„œ๋ฒ„ ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ์†Œ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ, ํ•„์š”ํ•  ๋•Œ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋ฐ”๊พธ๋Š” ๋ฐฉ์‹
์ฆ‰ ์„œ๋ฒ„๋ฅผ โ€œํŒŒ์ผ ๋ณด๊ด€ํ•จโ€ ์ฒ˜๋Ÿผ ๋‹ค๋ฃฌ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค.

โ€ข ๊ฐ€์ ธ์˜ค๊ธฐ โ†’ GET

โ€ข ์ƒˆ๋กœ ๋„ฃ๊ธฐ โ†’ POST

โ€ข ์ˆ˜์ •ํ•˜๊ธฐ โ†’ PUT

โ€ข ์‚ญ์ œํ•˜๊ธฐ โ†’ DELETE


REST API ํŠน์ง•

๊ท ์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค


์ฆ‰ REST๋Š” ์‚ฌ์šฉ ๋ฐฉ์‹์ด ํ•ญ์ƒ ๋น„์Šทํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์–ด๋–ค API๋Š” /getUser, ์–ด๋–ค API๋Š” /userInfo.. ์ด๋Ÿฐ์‹์œผ๋กœ ๋‚˜์˜ค๋ฉด ์˜ˆ์ธก์ด ์•ˆ๋œ๋‹ค.
๊ทธ๋ž˜์„œ /users, /users/1 ์ด๋Ÿฐ์‹์œผ๋กœ ํ˜•์‹์„ ์ž์› ์ค‘์‹ฌ์œผ๋กœ ํ†ต์ผํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ท ์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” 4๊ฐ€์ง€ ์กฐ๊ฑด์ด ์žˆ๋‹ค.

1๏ธโƒฃ ์ฃผ์†Œ๋กœ ์ž์›์„ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•ด๋ผ

โ†’ /users/1 ์ฒ˜๋Ÿผ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์‹คํžˆ ๋ณด์ด๊ฒŒ ํ‘œํ˜„

2๏ธโƒฃ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ›์€ ์ •๋ณด๋งŒ์œผ๋กœ ์ดํ•ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค

โ†’ ์‘๋‹ต ์•ˆ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋‹ค ๋“ค์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค

3๏ธโƒฃ ์‘๋‹ต์— ์„ค๋ช…์ด ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค

โ†’ JSON ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•˜๊ณ  ์˜๋ฏธ๊ฐ€ ๋ถ„๋ช…ํ•ด์•ผ ํ•œ๋‹ค

4๏ธโƒฃ ๋‹ค์Œ์— ๋ญ˜ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋„ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค

โ†’ ๊ด€๋ จ ๋งํฌ๋‚˜ ์ถ”๊ฐ€ ์ •๋ณด ์ œ๊ณต ๊ฐ€๋Šฅ



์ฆ‰ ๋ˆ„๊ตฌ๋‚˜ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ API๋ฅผ ๋งŒ๋“ค์ž๋Š” ๊ฒƒ์ด ๊ท ์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

๋ฌด์ƒํƒœ (Stateless)


์ œ์ผ ์ค‘์š”ํ•œ ํŠน์ง•์ด๋‹ค.

โ€œ์„œ๋ฒ„๋Š” ์ด์ „ ์š”์ฒญ์„ ๊ธฐ์–ตํ•˜์ง€ ์•Š๋Š”๋‹คโ€


์‹๋‹น์„ ๋น„์œ ๋กœ ์„ค๋ช…์„ ํ•ด๋ณด์ž!
์šฐ์„  ์ƒํƒœ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š”

  1. ์ฝœ๋ผ ์ฃผ์„ธ์š”
  2. ์•„๊นŒ ๊ฑฐ์— ๋ถˆ๊ณ ๊ธฐ ๋ฒ„๊ฑฐ๋„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
    ์ด๋Ÿฐ์‹์œผ๋กœ ์ฃผ๋ฌธ์„ ํ•  ๊ฒƒ์ด๋‹ค..์ด๋Ÿฌ๋ฉด ์ง์›์€ ์•„๊นŒ์˜ ๋‚ด์šฉ์„ ๋ชจ๋‘ ๊ธฐ์–ต์„ ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์˜จ๋‹ค.

    ํ•˜์ง€๋งŒ ๋ฌด์ƒํƒœ ์ƒํ™ฉ์˜ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž
  3. ์ฝœ๋ผ ์ฃผ์„ธ์š”
  4. ์ฝœ๋ผํ•˜๋‚˜ ๋ถˆ๊ณ ๊ธฐ ๋ฒ„๊ฑฐ ํ•˜๋‚˜ ์ฃผ์„ธ์š”
    ๋ฌด์ƒํƒœ ์„ฑ์ด๊ธฐ์— ๋‘๋ฒˆ์งธ ์ฃผ๋ฌธ์€ ์ฒซ๋ฒˆ์งธ ์ฃผ๋ฌธ์„ ๊ธฐ์–ตํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ง€๊ธˆ ๋“ค์–ด์˜จ ์ฃผ๋ฌธ๋งŒ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
    ์ด๊ฒŒ ๋ฌด์ƒํƒœ์„ฑ์ด๋‹ค.

    API๋ฅผ ๋Œ€์ž…์‹œ์ผœ ์ƒ๊ฐํ•ด๋ณด์ž
    ์ƒํƒœ๊ฐ€ ์žˆ๋Š” API์ธ ๊ฒฝ์šฐ์—๋Š”
    1๏ธ. ๋กœ๊ทธ์ธ ์š”์ฒญ
    2๏ธ. ์„œ๋ฒ„๊ฐ€ ์ด ์‚ฌ๋žŒ ๋กœ๊ทธ์ธํ–ˆ์ง€ ๊ธฐ์–ต
    3๏ธ. ๋‹ค์Œ ์š”์ฒญ์—์„œ ์ธ์ฆ ์ •๋ณด ์—†์ด ์ฒ˜๋ฆฌ
    ์ฆ‰ ์„œ๋ฒ„๊ฐ€ ๊ณ„์† ๊ธฐ์–ตํ•ด์•ผ ํ•œ๋‹ค.

    ๋ฐ˜๋ฉด ๋ฌด์ƒํƒœ์„ฑ์€
  5. ๋กœ๊ทธ์ธ โ†’ ํ† ํฐ ๋ฐœ๊ธ‰
    2๏ธ. ์ดํ›„ ์š”์ฒญ๋งˆ๋‹ค ํ† ํฐ์„ ๊ฐ™์ด ๋ณด๋ƒ„
    ์„œ๋ฒ„๋Š” ๋งค ์š”์ฒญ ์‹œ โ€œ์ด ํ† ํฐ์ด ์œ ํšจํ•œ๊ฐ€?โ€, โ€œ๊ถŒํ•œ์ด ์žˆ๋Š”๊ฐ€?โ€๋งŒ ํ™•์ธํ•˜๊ณ  ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด์ „ ์š”์ฒญ์€ ๊ธฐ์–ตํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

    ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฌด์ƒํƒœ์„ฑ์€ ์„œ๋ฒ„๊ฐ€ ๋‹จ์ˆœํ•ด์ง€๊ณ , ์„œ๋ฒ„๊ฐ€ ํ™•์žฅํ•˜๊ธฐ๋„ ํŽธ๋ฆฌํ•ด์ง„๋‹ค.

๊ณ„์ธตํ™” ์‹œ์Šคํ…œ


ํด๋ผ์ด์–ธํŠธ๋Š” ์ค‘๊ฐ„์— ๋ญ๊ฐ€ ์žˆ๋Š”์ง€ ๋ชฐ๋ผ๋„ ๋œ๋‹ค.
์ด๊ฑด ์‰ฝ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์œ„ํ•ด ์žˆ๋Š” API ์„œ๋ฒ„, DB๋“ฑ ๊ทธ๋ƒฅ ๊ด€์‹ฌ ์—†์ด ์˜ค์ง ํด๋ผ์ด์–ธํŠธ๋Š”

์„œ๋ฒ„๋ž‘ ๋Œ€ํ™”(ํ†ต์‹ )ํ•œ๋‹ค ๋ผ๊ณ ๋งŒ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค



์บ์‹œ ๊ฐ€๋Šฅ์„ฑ


๋‹ค๋“ค ํ•œ๋ฒˆ ์”ฉ์€ ๋“ค์–ด๋ดค์„๊ฑฐ๋‹ค.
์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š”, ์ž์ฃผ ์•ˆ ๋ฐ”๋€Œ๋Š” ๋ฐ์ดํ„ฐ๋Š” ์ €์žฅํ•ด๋‘๊ณ  ๋‹ค์‹œ ์“ฐ์ž.
๊ณตํ†ต ์ด๋ฏธ์ง€ ๊ฐ™์€ ๊ฒƒ์€ ๋งค๋ฒˆ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋ฉด ๊ท€์ฐฎ์ง€ ์•Š์€๊ฐ€? ์ด๊ฑธ ์บ์‹ฑํ•ด์„œ ๋‹ค์Œ๋ฒˆ์— ๋˜ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์˜จ๋””๋งจ๋“œ ์ฝ”๋“œ


์„œ๋ฒ„๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ด์„œ ํด๋ผ์ด์–ธํŠธ ๊ธฐ๋Šฅ์„ ์ž ๊น ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค๋ฉด ์ „ํ™”๋ฒˆํ˜ธ ํ‹€๋ฆฌ๋ฉด ๋ฐ”๋กœ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์„œ๋ฒ„์—์„œ ์ „์†กํ•œ ์ฝ”๋“œ๋กœ ์ธํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.


REST API ์„ค๊ณ„

  • URL์—๋Š” ๋ช…์‚ฌ ์‚ฌ์šฉ (๋™์‚ฌ x)
    • /getAllUser โŒ
    • /users, /users/{id} โœ…
  • URL ๊ฒฝ๋กœ์—๋Š” ์†Œ๋ฌธ์ž ์‚ฌ์šฉ
  • ํ•˜์ดํฐ(-)์€ URL ๊ฐ€๋…์„ฑ ๋†’์ด๋Š”๋ฐ ์‚ฌ์šฉ
  • ๋ฐ‘์ค„(_)์€ URL์— ์‚ฌ์šฉ ๊ธˆ์ง€
  • HTTP ๋ฉ”์„œ๋“œ ํ™œ์šฉ
    • GET : ์ •๋ณด ์š”์ฒญ
    • POST : ์ •๋ณด ์ƒ์„ฑ
    • DELETE : ์ •๋ณด ์‚ญ์ œ
    • PUT : ์ •๋ณด ์ „์ฒด ์ˆ˜์ •
    • PATCH : ์ •๋ณด ์ผ๋ถ€ ์ˆ˜์ •
  • HTTP ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ ํ™œ์šฉ
    • 200 : OK
    • 201 : Created
    • 400 : Bad Request
    • 401 : Unauthoized
    • 404 : Not Found
    • 500 : Internal Server Error
  • ๊ณ„์ธต ๊ด€๊ณ„๋Š” ์Šฌ๋ž˜์‹œ(/)๋กœ ํ‘œํ˜„ํ•˜๊ณ  URL ๋งˆ์ง€๋ง‰์€ ์Šฌ๋ž˜์‹œ x
  • ํŒŒ์ผ ํ™•์žฅ์ž๋Š” URL์— ํฌํ•จ x
    • http//seungje.com/api/photo.png โŒ
    • http//seungje.com/api/photo โœ…
  • ์กฐํšŒ์‹œ์—๋Š” ์ฟผ๋ฆฌ ํ™œ์šฉ
    • ํŽ˜์ด์ง€๋‚˜ ํ•„ํ„ฐ๋ง ์ •๋ณด๋Š” ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ ํ™œ์šฉ
  • ๋ฆฌ์†Œ์Šค๊ฐ„ ๊ด€๊ณ„์žˆ๋Š” ๊ฒฝ์šฐ
    • โ€œ/๋ฆฌ์†Œ์Šค๋ช…/๋ฆฌ์†Œ์ŠคID/๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๋ช…โ€์œผ๋กœ ํฌํ˜„


REST API์™€ RESTful API ์ฐจ์ด

์ œ์ผ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์ด๋‹ค.
๋Œ€๋ถ€๋ถ„ REST API์™€ RESTful API๋Š” ๊ฑฐ์˜ ๊ฐ™์€ ๋ง์ฒ˜๋Ÿผ ์“ฐ์ธ๋‹ค.
ํ•˜์ง€๋งŒ ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

REST API : REST ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ API

RESTful API : REST์˜ ์›์น™์„ ์ž˜ ์ง€ํ‚จ API


REST API ์žฅ์ 

๋งˆ์ง€๋ง‰์œผ๋กœ REST๋ฅผ ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๊ทธ์ € ์„ค๋ช…๋งŒ ๋‚˜์—ดํ–ˆ์ง€ ์ œ์ผ ์ค‘์š”ํ•œ ๊ทธ๋ž˜์„œ ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์•„์ง ์˜๋ฌธ์ด ๋“ค์ˆ˜๋„ ์žˆ๋‹ค.
REST ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„๋œ API์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์ด๋‹ค. REST ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„๋œ API๋Š”์ฒ˜์Œ ๋ณด๋Š” ์‚ฌ๋žŒ๋„ ์–ด๋А ์ •๋„ ๊ฐ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

GET /users/1


์ด๊ฑธ ๋ณด๋ฉด ๋Œ€๋ถ€๋ถ„ 1๋ฒˆ ์‚ฌ์šฉ์ž๋ฅผ ์กฐํšŒํ–ˆ๋‹ค๋ผ๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด์ฒ˜๋Ÿผ REST๋Š” ๊ตฌ์กฐ๊ฐ€ ํ†ต์ผ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜‘์—…ํ•˜๊ธฐ ์ข‹๋‹ค.
๋˜ํ•œ REST๋Š” ๋ฌด์ƒํƒœ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅธ๋‹ค. ์ฆ‰, ์š”์ฒญ ํ•˜๋‚˜๋งŒ ๋ด๋„ ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๊ฒŒ ์™œ ์ค‘์š”ํ•˜๋ƒ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์กŒ์„ ๋•Œ ์„œ๋ฒ„๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€๋กœ ๋Š˜๋ฆฌ๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์š”์ฒญ์ด ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์—์–ด๋А ์„œ๋ฒ„๊ฐ€ ๋ฐ›์•„๋„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋Œ€ํ˜• ์„œ๋น„์Šค๋“ค์ด REST ๋ฐฉ์‹์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋‹ค.
๋งˆ์ง€๋ง‰์œผ๋กœ REST๋Š” ํŠน์ • ์–ธ์–ด๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋ฌถ์ด์ง€ ์•Š๋Š”๋‹ค.
์„œ๋ฒ„๋Š” Java๋กœ ๋งŒ๋“ค๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” React๋กœ ๋งŒ๋“ค๊ณ , ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๋Š” Swift๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. REST๋Š” HTTP ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์ˆ ์— ์ข…์†๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด์ฒ˜๋Ÿผ REST๋Š” ๋‹จ์ˆœํžˆ ์œ ํ–‰ํ•ด์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ์œ„์™€๊ฐ™์€ ์ด์œ ๋กœ ์‚ฌ์šฉ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: