Spring Boot

[Spring Boot] API์™€ REST API๊ฐ€ ๋ญ˜๊นŒ? ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด์คŒ

์šฐ์ฃผ๋ฌผ๊ณ ๊ธฐ 2025. 5. 3. 14:45
๋ฐ˜์‘ํ˜•
API๋ž€?

 

API๋Š” ๋งค๊ฐœ์ฒด์ž„.

๋„คํŠธ์›Œํฌ์—์„œ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ๋งค๊ฐœ์ฒด!

 

์‹๋‹น์—์„œ ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š”๊ฑธ๋กœ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž๋ฉด,

์šฐ๋ฆฌ๊ฐ€ ์‹๋‹น์„ ๊ฐ€์„œ ์ฃผ๋ฌธํ• ๋•Œ, ์ฃผ๋ฐฉ์œผ๋กœ ์ง์ ‘ ๊ฐ€์„œ ์š”๋ฆฌ์‚ฌํ•œํ…Œ ๋ฌด์Šจ ์Œ์‹ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”~ ๋ผ๊ณ  ์•ˆํ•˜์ž–์•„์š”

 

๋ฉ”๋‰ดํŒ ๋ณด๊ณ  ๊ฑฐ๊ธฐ ๋‚˜์™€์žˆ๋Š”๋Œ€๋กœ ์ฃผ๋ฌธํ•จ!!!

๊ทธ๋ฆฌ๊ณ  ์›จ์ดํ„ฐ๊ฐ€ ์ฃผ๋ฌธ์„ ๋ฐ›์œผ๋ฉด, ์ฃผ๋ฐฉ์— ๊ฐ€์„œ @@์š”๋ฆฌ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”~ ๋ผ๊ณ  ํ•˜๊ณ 

์š”๋ฆฌ๊ฐ€ ๋‹ค ๋ผ๋ฉด ์›จ์ดํ„ฐ๊ฐ€ ์†๋‹˜ํ•œํ…Œ ์š”๋ฆฌ๋ฅผ ์คŒ.

 

์—ฌ๊ธฐ์„œ

์†๋‹˜ = ํด๋ผ์ด์–ธํŠธ

์š”๋ฆฌ์‚ฌ = ์„œ๋ฒ„

์›จ์ดํ„ฐ = API

๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด๋จ.

 

๊ทธ๋ฆฌ๊ณ  ๋ฉ”๋‰ดํŒ์„ API ๋ช…์„ธ์„œ (์–ด๋–ค์‹์œผ๋กœ API๋ฅผ ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœํ•˜๋ฉด๋˜๋Š”์ง€.. ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฉ€ ๋„ฃ์–ด์•ผํ•˜๋Š”์ง€..๋“ฑ)๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด๋จ

 

๋‹ค์‹œ ์‹ค์ œ ์ƒํ™ฉ์—์„œ ์˜ˆ์‹œ๋ฅผ ๋“ค์ž๋ฉด,

์šฐ๋ฆฌ๊ฐ€ ์›น์‚ฌ์ดํŠธ ๋„ค์ด๋ฒ„์— ์ ‘์†ํ•˜๋Š” ์ƒํ™ฉ.

-> ํด๋ผ์ด์–ธํŠธ๊ฐ€ url ์ฃผ์†Œ์ฐฝ์— ๋„ค์ด๋ฒ„.com์„ ์ž…๋ ฅ (๋„ค์ด๋ฒ„ ํ™”๋ฉด ๋ณด์—ฌ์ค˜~๋ผ๋Š” GET ์š”์ฒญ)

-> API๋Š” ์ด ์š”์ฒญ ๋ฐ›์•„์„œ ์„œ๋ฒ„์— ์ „๋‹ฌ

-> ์„œ๋ฒ„๋Š” API๊ฐ€ ์ค€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ, ๊ฒฐ๊ณผ๋ฌผ ๋งŒ๋“ค์–ด์„œ ๋‹ค์‹œ API๋กœ ์ „๋‹ฌ

-> API๊ฐ€ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์„ ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด๋ณด๋‚ด๊ณ , ์šฐ๋ฆฌ๊ฐ€ ๋„ค์ด๋ฒ„ ๋ฉ”์ธ ํ™”๋ฉด ๋ณผ ์ˆ˜ ์žˆ๋Š”๊ฒƒ์ž„.

 

 


๊ทธ๋ ‡๋‹ค๋ฉด REST API๋Š” ๋ญ˜๊นŒ?

 

REST API๋Š” URL ์„ค๊ณ„ ๋ฐฉ์‹์„ ๋งํ•˜๋Š”๊ฑฐ์ž„!

rest api์˜ ์žฅ์ ์€ url๋งŒ ๋ณด๊ณ ๋„ ๋ญ˜ ํ•˜๋Š” api์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฑฐ.

 

์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Œ.

์—ฌ๊ธฐ์„œ ์ž์›? ํšŒ์›, ๊ฒŒ์‹œ๋ฌผ, ๋Œ“๊ธ€ ๋“ฑ๋“ฑ.. ์ „๋ถ€ ์ž์›์ด๋ผ๊ณ  ๋ถ€๋ฆ„.

 

๊ทธ๋Ÿผ ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค๋Š”๊ฑด?

์ž์›๋งˆ๋‹ค ๊ณ ์œ ํ•œ url์ด ์žˆ์Œ

์˜ˆ๋ฅผ ๋“ค๋ฉด,

/members/1 -> ID๊ฐ€ 1์ธ ํšŒ์›

/posts/2 -> ID๊ฐ€ 2์ธ ๊ฒŒ์‹œ๋ฏˆ

์ด๋Ÿฐ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š”๊ฑฐ์ž„.

 

๊ทธ๋ฆฌ๊ณ  ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค ๋ผ๋Š” ๋œป์€,

REST API ์—์„œ๋Š” ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ HTTP ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์˜๋ฏธ๋ฅผ ๊ตฌ๋ถ„ํ•จ

์˜ˆ๋ฅผ ๋“ค๋ฉด,

1๋ฒˆ ํšŒ์› ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ๋•Œ : GET ๋ฉ”์†Œ๋“œ๋ฅผ ์“ฐ๊ณ , url์€ /members/1

1๋ฒˆ ํšŒ์› ์ •๋ณด๋ฅผ ์‚ญ์ œํ•  ๋•Œ : DELETE ๋ฉ”์†Œ๋“œ๋ฅผ ์“ฐ๊ณ , url์€ /members/1

์ด๋Ÿฐ์‹์ž„.

 

url๊ฐ™์€๋ฐ ๊ดœ์ฐฎ๋ƒ? ๊ดœ์ฐฎ์Œ. ๋ฉ”์†Œ๋“œ๊ฐ€ ๋‹ฌ๋ผ์„œ ๊ตฌ๋ถ„์ด ๋˜๋‹ˆ๊นŒ.

 

 

 

๊ทธ๋ฆฌ๊ณ  RESTful ํ•˜๋‹ค. REST์Šค๋Ÿฝ์ง€ ์•Š๋‹ค. ๋ผ๋Š” ๋ง์ด ์žˆ์Œ.

์ด๊ฒŒ ๋จผ๋œป์ด๋ƒ๋ฉด,

 

RESTful ํ•˜๋‹ค๋Š”๊ฑด

์ž์› ์ด๋ฆ„์„ URL๋กœ ํ‘œํ˜„ํ•˜๊ณ , ํ–‰์œ„๋Š” HTTP ๋ฉ”์†Œ๋“œ๋กœ ํ‘œํ˜„ํ•˜๋Š”๊ฑฐ์ž„.

๊ทธ๋Ÿผ ๋ฐ˜๋Œ€๋กœ REST์Šค๋Ÿฝ์ง€ ์•Š๋‹ค๋Š”๊ฑด

URL์— ๋™์‚ฌ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๊ฑฐ๋‚˜, ์ž์› ์ค‘์‹ฌ์ด ์•„๋‹ˆ๋ผ ํ–‰์œ„ ์ค‘์‹ฌ์ธ ๊ฒฝ์šฐ์— ๊ทธ๋ ‡๊ฒŒ ๋งํ•จ.

 

์˜ˆ๋ฅผ ๋“ค์–ด

O : DELETE /posts/1 (HTTP ๋ฉ”์†Œ๋“œ๋กœ ๋ญํ• ๊ฑด์ง€ ํ–‰์œ„ ๋‚˜ํƒ€๋‚ด๊ณ , url์— ์ž์›์ด๋ฆ„)

X : GET /deletePosts/1 (ํ–‰์œ„ ์ค‘์‹ฌ์ด๋ผ REST ์Šค๋Ÿฝ์ง€ ์•Š์Œ)

 

 

 

--> ์•„๋ฌดํŠผ ๊ฒฐ๋ก ์€ REST API๋Š” "์ž์› ์ค‘์‹ฌ"์˜ URL ์„ค๊ณ„ํ•˜๊ณ , ๊ทธ ์ž์›์ด ๋ญ” ์ผ์„ ํ• ๊ฑด์ง€ ํ–‰์œ„๋Š” HTTP๋ฉ”์†Œ๋“œ๋กœ ํ‘œํ˜„ํ•˜๋ฉด๋จ!!

 

๋ฐ˜์‘ํ˜•