๐ŸŒฑ Spring Boot ์‹œ์ž‘ํ•˜๊ธฐ - 5. API์™€ RESTful ์ดํ•ดํ•˜๊ธฐ

๊น€์„ธํ˜„ยท2025๋…„ 10์›” 22์ผ

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
5/19

๋‚ ์งœ:2025-10-22


ํ•™์Šต ๋ชฉํ‘œ

  • API(Application Programming Interface)์˜ ๊ฐœ๋… ์ดํ•ด
  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ API๋กœ ์†Œํ†ตํ•˜๋Š” ์›๋ฆฌ ์ดํ•ด
  • RESTful API์˜ ํŠน์ง•๊ณผ ์„ค๊ณ„ ์›์น™ ์ดํ•ด

โœ… API ๊ฐœ๋…

๐Ÿ“Œ API(Application Programming Interface)

ํ”„๋กœ๊ทธ๋žจ๋ผ๋ฆฌ ๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋งˆ์น˜ ๋ ˆ์Šคํ† ๋ž‘ ๋ฉ”๋‰ดํŒ์ฒ˜๋Ÿผ, ์–ด๋–ค ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๊ณ  ์–ด๋–ค ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”น ์ธํ„ฐํŽ˜์ด์Šค๋กœ์„œ์˜ API

  • API์˜ ํ’€๋„ค์ž„์€ Application Programming Interface
  • ์ฆ‰, ์ธํ„ฐํŽ˜์ด์Šค(Interface) ์—ญํ• 
  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” API ๋ช…์„ธ์— ๋”ฐ๋ผ ํ†ต์‹ 
  • ๋‚ด๋ถ€ ๊ตฌํ˜„์€ ๋ชฐ๋ผ๋„ API ๋ช…์„ธ๋งŒ ์•Œ๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๐Ÿ’ก ์˜ˆ์‹œ: Mouse ์ธํ„ฐํŽ˜์ด์Šค

Mouse m = new SamsungMouse();
m.leftClick();
m.rightClick();
m.scrollWheel();
  • ํด๋ผ์ด์–ธํŠธ๋Š” SamsungMouse์ธ์ง€ LogintechMouse์ธ์ง€ ๋ชฐ๋ผ๋„ ๋œ๋‹ค
  • ์ค‘์š”ํ•œ ๊ฑด leftClick(), rightClick(), scrollWheel() ์ธํ„ฐํŽ˜์ด์Šค ๋ช…์„ธ

๐Ÿ”น ์‹ค์ƒํ™œ ์˜ˆ์‹œ

  • ํ™˜์œจ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” API: https://open.er-api.com/v6/latest/usd
  • ํด๋ผ์ด์–ธํŠธ๋Š” API ํ˜ธ์ถœ๋งŒ์œผ๋กœ ํ™˜์œจ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
  • ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ๊ธฐ์ˆ ๋กœ ๊ตฌํ˜„๋˜์—ˆ๋Š”์ง€๋Š” ๋ชฐ๋ผ๋„ ์ƒ๊ด€ ์—†์Œ

๐Ÿ’ฌ ํ•ต์‹ฌ: API๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฏ€๋กœ, ๊ตฌํ˜„์ฒด๋ฅผ ๋ชฐ๋ผ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ


โœ… RESTful API

๐Ÿ“Œ REST

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ๊ตฌํ˜„์„ ๋ชฐ๋ผ๋„ API๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ

  • RESTful = REST ์›์น™์„ ์ž˜ ์ง€์ผœ ์„ค๊ณ„ํ•œ API
  • ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ ํ•˜๋Š” ๊ทœ์น™์€ ์•„๋‹ˆ๊ณ , โ€œ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ข‹๋‹คโ€ ์ •๋„์˜ ๊ถŒ์žฅ ๋ฐฉ์‹

๐Ÿ”นRESTful API ํŠน์ง•

  • URL๋งŒ ๋ณด๊ณ  API ๊ธฐ๋Šฅ์„ ์˜ˆ์ƒ ๊ฐ€๋Šฅ
  • ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ์œ ์ง€๋ณด์ˆ˜์™€ ํ™•์žฅ์ด ์šฉ์ด

โœ… RESTful API ๋””์ž์ธ ์›์น™

1.๋™์‚ฌ๋ณด๋‹จ ๋ช…์‚ฌ, ๋‹จ์ˆ˜๋ณด๋‹จ ๋ณต์ˆ˜๋ฅผ ์‚ฌ์šฉ
โŒ /member/get/item/hello
โœ… /members/items

2.URL ๋งˆ์ง€๋ง‰์— ์Šฌ๋ž˜์‹œ(/)๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
โŒ /members/
โœ… /members

3.์–ธ๋”๋ฐ”(_) ๋Œ€์‹  ํ•˜์ดํ”ˆ(-) ์‚ฌ์šฉ, ๋Œ€๋ฌธ์ž ์‚ฌ์šฉ ๊ธˆ์ง€
โŒ /restful_services
โœ… /restful-services

4.ํ™•์žฅ์ž ํฌํ•จํ•˜์ง€ ์•Š๊ธฐ (svg, png, exe ๋“ฑ)
โŒ /image.svg
โœ… /images

5.๊ณ„์ธตํ™”(Layered) ๊ตฌ์กฐ
โŒ /items/{memberId}/members/{itemId}
โœ… /members/{memberId}/items/{itemId}

  • ๐Ÿ’ฌ ํ•ต์‹ฌ: RESTful API ์„ค๊ณ„๋Š” ์ง๊ด€์ ์ด๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ

์ •๋ฆฌ

  • API: ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์†Œํ†ตํ•˜๋Š” ๋ช…์„ธ(์ธํ„ฐํŽ˜์ด์Šค)
  • RESTful API: REST ์•„ํ‚คํ…์ฒ˜ ์›์น™์„ ์ ์šฉํ•ด ์ง๊ด€์ ์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์„ค๊ณ„ํ•œ API
  • ์„ค๊ณ„ ์›์น™: ๋ช…์‚ฌ ์‚ฌ์šฉ, URL ๊น”๋”ํ•˜๊ฒŒ, ๊ณ„์ธตํ™” ๊ตฌ์กฐ, ํ™•์žฅ์ž ์ œ์™ธ, ์ผ๊ด€์„ฑ ์œ ์ง€
profile
๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ•œ ๊ฑธ์Œ

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