๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐฑ์—”๋“œ/spring&springboot

[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„_Spring Boot ์ž…๋ฌธ์ฃผ์ฐจ] Spring Boot ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์„œ๋ฒ„ ๊ฐœ๋ฐœ ์‹œ ํ•„์š”ํ•œ ๊ฐœ๋…

by alswlfl 2026. 6. 22.

Spring Boot ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

1. ์ธํ…”๋ฆฌ์ œ์ด ์ƒˆ ํ”„๋กœ์ ํŠธ ํด๋ฆญ

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์ดˆ๊ธฐ ํ™”๋ฉด

 

- ์ด๋ฆ„: ํ”„๋กœ์ ํŠธ๋ช…

- ์œ„์น˜: ํ”„๋กœ์ ํŠธ๋ฅผ ์ €์žฅํ•  ๊ฒฝ๋กœ

- JDK: ์‚ฌ์šฉํ•  JDK ๋ฒ„์ „ ๋ช…์‹œ

 

2.  Dependencies ์„ค์ • 

Dependencies ์„ค์ •


Gradle(๊ทธ๋ ˆ์ด๋“ค)์ด๋ž€

Gradle์€ build(๋นŒ๋“œ) ์ž๋™ํ™” ์‹œ์Šคํ…œ์œผ๋กœ, ์ž‘์„ฑํ•œ Java ์ฝ”๋“œ๋ฅผ ์„ค์ •์— ๋งž๊ฒŒ build ํ•ด์คŒ → ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ JAR ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์คŒ
* ๋นŒ๋“œ(build): ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋ฌผ๋กœ ๋งŒ๋“œ๋Š” ์ผ๋ จ์˜ ๊ณผ์ •

Gradle vs Maven
โ–ถ๏ธŽ Maven
pom.xml์„ ์ด์šฉํ•œ
์ •ํ˜•ํ™”๋œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ž๋™ ๋‹ค์šด๋กœ๋“œํ•จ
- ๊ธฐ์กด์— Apache Ant(์ž๋ฐ”๋กœ ๊ฐœ๋ฐœ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ปค๋งจ๋“œ ๋ผ์ธ ํ˜•ํƒœ์˜ ๋นŒ๋“œ, ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๋„๊ตฌ)๋ผ๋Š” ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์ง€๋งŒ Maven์ด Ant๋ฅผ ๋„˜์–ด์„œ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ

โ–ถ๏ธŽ Gradle
Ant์™€ Maven์˜ ์žฅ์ ์„ ๋ชจ์•„ ๊ฐœ๋ฐœ๋œ 2012๋…„์— ์ถœ์‹œ๋œ Groovy๋ฅผ ์ด์šฉํ•œ ๋นŒ๋“œ ์ž๋™ํ™” ์‹œ์Šคํ…œ
- Android ๋นŒ๋“œ ๋„๊ตฌ๋กœ ์ฑ„ํƒ๋˜์—ˆ์œผ๋ฉฐ, Java, C/C++, Python ๋“ฑ์˜ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๋ฉฐ ๋ณ„๋„์˜ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์˜ ํ•ญ๋ชฉ ์„ค์ • ๊ฐ€๋Šฅ
- ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ ์„ ์–ธ, if, for ๋“ฑ์˜ ๋กœ์ง ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ด ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•จ

Maven vs Gradle ์ค‘ Grade์ด ๋” ์ข‹์Œ
1. ์Šคํฌ๋ฆฝํŠธ ๊ธธ์ด์™€ ๊ฐ€๋…์„ฑ, ๋นŒ๋“œ์™€ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ Gradle์ด ์šฐ์„ธํ•จ

2. Build๋ผ๋Š” ๋™์ ์ธ ์š”์†Œ๋ฅผ xml ๋กœ ์ •์˜ํ•˜๊ธฐ์— ์–ด๋ ค์šด ๋ถ€๋ถ„์ด ๋งŽ์Œ
- ์„ค์ • ๋‚ด์šฉ์ด ๊ธธ์–ด์ง€๋ฉด ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง
- ์˜์กด ๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์—๋Š” ๋ถ€์ ์ ˆํ•จ

3. ์˜์กด์„ฑ์ด ๋Š˜์–ด๋‚  ์ˆ˜๋ก ์Šคํฌ๋ฆฝํŠธ ํ’ˆ์งˆ ์ฐจ์ด๊ฐ€ ์ปค์ง
- Configuration Injection ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด ๊ณตํ†ต ๋ชจ๋“ˆ์„ ์ƒ์†ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ์ ์„ ์ปค๋ฒ„
- Maven์€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ์—์„œ ํŠน์ • ์„ค์ •์„ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ƒ์†์„ ๋ฐ›์•„์•ผ ํ•˜์ง€๋งŒ, gradle์€ ์„ค์ • ์ฃผ์ž… ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•จ
- ์„ค์ • ์ฃผ์ž… ์‹œ ํ”„๋กœ์ ํŠธ์˜ ์กฐ๊ฑด์„ ์ฒดํฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ํ”„๋กœ์ ํŠธ ๋ณ„๋กœ ์ฃผ์ž…๋˜๋Š” ์„ค์ •์„ ๋‹ค๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ

Gradle๋กœ ๋นŒ๋“œํ•˜๊ธฐ

 

build.gradle ํŒŒ์ผ

gradle ๊ธฐ๋ฐ˜์˜ build ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ, ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜๊ฑฐ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ์˜์กด์„ฑ์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

- Groovy ์–ธ์–ด ํ˜น์€ Kotlin ์–ธ์–ด๋กœ ์ž‘์„ฑ ๊ฐ€๋Šฅ

- ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ '๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ'๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ž„!

- dependencies ์•ˆ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ž‘์„ฑํ•˜๋ฉด, Gradle์ด ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ Maven Repository๋ผ๋Š” ์™ธ๋ถ€ ์ €์žฅ์†Œ์—์„œ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•ด์˜ด
* Maven Repository: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋ชจ์•„๋‘” ์ €์žฅ์†Œ

build.gradle ํŒŒ์ผ ๋‚ด๋ถ€ ์˜ˆ์‹œ


์„œ๋ฒ„๋ž€?

๋„คํŠธ์›Œํฌ: ์—ฌ๋Ÿฌ ๋Œ€์˜ ์žฅ๋น„๋“ค(ex: ์ปดํ“จํ„ฐ, ๋ผ์šฐํ„ฐ, ์Šค์œ„์น˜ ๋“ฑ)์ด ์„œ๋กœ ์—ฐ๊ฒฐ์ด ๋˜์–ด์„œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๊ธฐ์ˆ 

 

ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„

๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ณผ์ •

  • ์‚ฌ์šฉ์ž๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋ฐ›์Œ
  • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์„œ๋ฒ„์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์„œ๋ฒ„์˜ ์ •๋ณด ํ•„์š”ํ•จ
  • ์ด๋•Œ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์„œ๋ฒ„์— ์ •ํ™•ํ•˜๊ฒŒ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ œ๊ณต๋˜๋Š” ์ •๋ณด๊ฐ€ 'IP ์ฃผ์†Œ'์ž„
  • ๋„คํŠธ์›Œํฌ์—์„œ ์ •๋ณด๋ฅผ ์š”์ฒญ ๋ฐ›๊ณ  ์ „๋‹ฌํ•˜๋ ค๋ฉด ์ฃผ์†Œ์— ํ•ด๋‹นํ•˜๋Š” IP์™€ ๋ฐ›๋Š” ์‚ฌ๋žŒ์— ํ•ด๋‹นํ•˜๋Š” ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•จ

์›น ์„œ๋ฒ„

์ธํ„ฐ๋„ท์„ ํ†ตํ•ด HTTP๋ฅผ ์ด์šฉํ•ด ์›น ์ƒ์˜ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์‘๋‹ตํ•ด์ฃผ๋Š” ํ†ต์‹ ์„ ํ•˜๋Š” ์ผ์ข…์˜ ์ปดํ“จํ„ฐ

ex) ์ด๋ฉ”์ผ, SNS ์„œ๋น„์Šค

์›น ์„œ๋ฒ„ ๋™์ž‘ ๊ณผ์ •

  1. ์‚ฌ์šฉ์ž๋Š” ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด HTTP ์š”์ฒญ(HTTP Request)์„ ์„œ๋ฒ„์— ๋ณด๋ƒ„
  2. ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์š”์ฒญ์„ ์Šน์ธํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ HTTP ์‘๋‹ต(HTTP Response)์— ๋‹ด์•„์„œ ๋ธŒ๋ผ์šฐ์ €์— ์ „์†กํ•จ
  3. ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์—์„œ ์ „๋‹ฌ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋กœ ํ™”๋ฉด์„ ๊ทธ๋ ค๋ƒ„

* ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ํ•  ๋•Œ GET ๋ฉ”์„œ๋“œ๋กœ ์š”์ฒญํ•จ!

API(Application Programming Interface)

๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ๊ณผ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋”ฐ๋ผ์•ผ ํ•˜๋Š” ํ•˜๋‚˜์˜ ๊ทœ์น™

  • ๊ฐœ๋ฐœ์ž๋Š” ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก API๋ฅผ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ์ƒ์„ฑํ•ด์•ผ ํ•จ
  • ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ์‹œ์Šคํ…œ ํ˜น์€ ์žฅ์น˜ ์‚ฌ์ด์—์„œ ์ •๋ณด๋‚˜ ์‹ ํ˜ธ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒฝ์šฐ์— ๊ทธ ์ ‘์ ์ด๋‚˜ ๊ฒฝ๊ณ„๋ฅผ ์˜๋ฏธ

RESTful API

API ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ๋ถ€๊ณผํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜

  • ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์„ ๋”ฐ๋ฅด๋Š” API๋ฅผ REST API๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , REST ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์›น ์„œ๋น„์Šค๋ฅผ RESTful ์›น ์„œ๋น„์Šค๋ผ๊ณ  ํ•จ
  • ์‰ฌ์šด ๋ง๋กœ, ์„œ๋ฒ„์— API๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ HTTP๋ฅผ ์ค€์ˆ˜ํ•˜๋ฉด์„œ ์ž˜ ์„ค๊ณ„๊ฐ€ ๋˜์–ด ์žˆ์œผ๋ฉด RESTfulํ•˜๊ฒŒ ์„ค๊ณ„๋จ
  • API์˜ ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž๋ฅผ ์ค‘๋ณต ์—†์ด ๊ณ ์œ ํ•˜๊ฒŒ ์ž˜ ๋งŒ๋“ค๊ณ , ํ•ด๋‹น API์— ์ ์ ˆํ•˜๊ฒŒ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด RESTfulํ•˜๊ฒŒ ์„ค๊ณ„ํ–ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Œ

REST API

์•„ํŒŒ์น˜ ํ†ฐ์บฃ(Apache Tomcat)

Web Server vs Web Application Server(WAS)

 

๋ธŒ๋ผ์šฐ์ €์—์„œ URL ์ž…๋ ฅํ•ด์„œ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ–ˆ์„ ๋•Œ HTTP ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์—ฌ์„œ HTML ๋ฌธ์„œ์™€ ๊ฐ™์€ ์ •์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์—ญํ• ์ด Web Server์ž„

  • ์ •์  ์ฝ˜ํ…์ธ : ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์—†๊ณ  ๋ˆ„๊ตฌ๋‚˜ ๋˜‘๊ฐ™์€ ํ™”๋ฉด์„ ๋ณด๋Š” ์ฝ˜ํ…์ธ 
  • ๋™์  ์ฝ˜ํ…์ธ : ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๋‹ค๋ฅธ ํ™”๋ฉด์ด ๋ณด์ด๋Š” ์ฝ˜ํ…์ธ (ex: ๋งˆ์ดํŽ˜์ด์ง€)

[์›น ์„œ๋ฒ„ ์—ญํ• ]

1. ์ •์  ์ฝ˜ํ…์ธ  ์ œ๊ณต: ์ด๋ฏธ ์™„์„ฑ๋˜์–ด ์žˆ๋Š” HTML๊ณผ ๊ฐ™์€ ๋ฌธ์„œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „๋‹ฌ

2. ๋™์  ์š”์ฒญ: ๋™์  ์ฝ˜ํ…์ธ  ์š”์ฒญ์ด ๋“ค์–ด์˜จ ๊ฒฝ์šฐ, ์›น ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— WAS์—๊ฒŒ ์ „๋‹ฌ

  • ์ข…๋ฅ˜: Apache, NginX

์›น ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๋™์ ์ธ ์ฒ˜๋ฆฌ๋Š” WAS๊ฐ€ ๋‹ด๋‹นํ•จ

  • HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘๋จ
  • ์›น ์„œ๋ฒ„์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ๋Œ€๋ถ€๋ถ„ WAS์—์„œ๋„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•จ(ex: ์ •์  ์ฝ˜ํ…์ธ  ์ „๋‹ฌ)
  • ์ข…๋ฅ˜: Tomcat, J Boss

Apache Tomcat

  • ์›น ์„œ๋ฒ„์™€ WAS๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ํšจ์œจ์ ์ž„
  • Apache ์žฌ๋‹จ์—์„œ ๋งŒ๋“  ๊ฒƒ์œผ๋กœ, ์›น ์„œ๋ฒ„์™€ WAS๋ฅผ ํ•ฉ์ณ ๋†“์€ ๊ฒƒ

Apache Tomcat

Spring๊ณผ Spring Boot

Spring framework

  • 2004๋…„์— 1.0์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ 20๋…„๊ฐ„ ์—…๊ทธ๋ ˆ์ด๋“œ ๋จ
  • AOP, IoC/DI ๋“ฑ ๊ฐ•๋ ฅํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ํฌํ•จ
  • ์ด๋Ÿฌํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋งŽ์€ ์„ค์ •(XML ์„ค์ •)์ด ํ•„์š”ํ•จ

Spring Boot framework

  • Spring framework์˜ ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด 2014๋…„์— ๋“ฑ์žฅ
  • ๊ธฐ์กด์˜ XML ์„ค์ • ๋Œ€์‹ ์— JAVA์˜ Annotation ๊ธฐ๋ฐ˜์˜ ์„ค์ •์„ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•ด ๊ฐ„ํŽธํ•˜๊ฒŒ ์„ค์ • ๊ฐ€๋Šฅ
  • ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์„ค์ • ์ •๋ณด๋ฅผ ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์„ค์ •์„ Default ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ์ „๋ถ€ ์„ค์ •ํ•ด์คŒ
  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ•˜์œ„ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์˜์กด์„ฑ ๊ด€๋ฆฌ๊ฐ€ ์‰ฌ์›Œ์ง
  • ๋‚ด์žฅํ˜• Apache Tomcat ์ œ๊ณต
    • Spring ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ Apache Tomcat์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์„œ ์‚ฝ์ž…ํ•ด์ฃผ์–ด์•ผ ํ–ˆ์Œ
    • Spring Boot๋Š” Starter Web Dependencies๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋‚ด์žฅํ˜• Apache Tomcat์„ ์ œ๊ณตํ•ด์คŒ

Postman

API ๊ฐœ๋ฐœ์„ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ

์ฆ‰, ์†์‰ฝ๊ฒŒ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ๋ธŒ๋ผ์šฐ์ €

Postman ๋‹ค์šด๋กœ๋“œ

 

Download Postman | Get Started for Free

Try Postman for free! Join 40 million users who rely on Postman, the collaboration platform for API development. Create better APIs—faster.

www.postman.com

API ์—ฐ์Šตํ•˜๊ธฐ

API ํ…Œ์ด๋ธ”: API๋“ค์„ ํ•œ ๋ˆˆ์— ํ™•์ธํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๋“ค๊ณผ ์†Œํ†ตํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•˜๋Š” ์ผ์ข…์˜ ํ‘œ
API ํ…Œ์ด๋ธ” ์˜ˆ์‹œ

 

1. Controller ํŒจํ‚ค์ง€ ์ƒ์„ฑ ๋ฐ ํด๋ž˜์Šค ์ƒ์„ฑ

Controller ํŒจํ‚ค์ง€ ์ƒ์„ฑ ๋ฐ ํด๋ž˜์Šค ํŒŒ์ผ ์ƒ์„ฑ

2. API ์ž‘์„ฑํ•˜๊ธฐ

package com.sparta.springprepare.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/api/hello")
    public String hello() {
        return "Hello World!";
    }
}

 

3. ์‹คํ–‰ ํ›„ Postman์œผ๋กœ ํ™•์ธํ•˜๊ธฐ

* Tomcat์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 8080 ํฌํŠธ๋กœ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ฒ ๋‹ค๊ณ  ์„ค์ •๋˜์–ด ์žˆ์Œ!


HTTP(HyperText Transfer Protocol)๋ž€?

HTTP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์–‘์‹์„ ์ •์˜ํ•œ 'ํ†ต์‹  ๊ทœ์•ฝ'์„ ์˜๋ฏธํ•จ

  • ํ†ต์‹  ๊ทœ์•ฝ์€ ์ปดํ“จํ„ฐ๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์ •ํ•ด๋‘” ์•ฝ์†
  • HTTP์—๋Š” Request์™€ Response ์กด์žฌ
    • Request Headers: ๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ Request ๋ฐ์ดํ„ฐ
    • Response Headers: ์„œ๋ฒ„๊ฐ€ ์›น ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ๋ณด๋‚ธ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ
  • Status Code๋ฅผ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์š”์ฒญ, ์‘๋‹ต ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ ํ‘œํ˜„ ๊ฐ€๋Šฅ
    • 1xx(Informational): ์š”์ฒญ์ด ์ˆ˜์‹ ๋˜์—ˆ์œผ๋ฉฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ณ„์† ๋˜๊ณ  ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ„
      - ์ฃผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ
    • 2xx(Successful): ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ„
      - ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ƒํƒœ ์ฝ”๋“œ๋Š” 200์œผ๋กœ, ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๋˜์—ˆ์œผ๋ฉฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋ฒ„์—์„œ ์ œ๊ณต๋จ์„ ์˜๋ฏธํ•จ
    • 3xx(Redirection): ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ถ”๊ฐ€์ ์ธ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•จ์„ ๋‚˜ํƒ€๋ƒ„
      - ์ฃผ๋กœ ํŽ˜์ด์ง€ ์ด๋™, ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋“ฑ์— ์‚ฌ์šฉ๋จ
    • 4xx(Client Error): ํด๋ผ์ด์–ธํŠธ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ„
      - ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ์ž˜๋ชป๋œ ์š”์ฒญ, ์ธ์ฆ ์˜ค๋ฅ˜ ๋“ฑ์— ์‚ฌ์šฉ๋จ
      - ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ƒํƒœ ์ฝ”๋“œ๋Š” 404๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ํŽ˜์ด์ง€๋‚˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„์—์„œ ์ฐพ์„ ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•จ
    • 5xx(Server Error): ์„œ๋ฒ„์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ„
      - ์ฃผ๋กœ ์„œ๋ฒ„์˜ ์˜ค๋ฅ˜, ์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜ ๋“ฑ์— ์‚ฌ์šฉ๋จ
      - ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ƒํƒœ ์ฝ”๋“œ๋Š” 500์œผ๋กœ, ์„œ๋ฒ„ ๋‚ด๋ถ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ์„ ์˜๋ฏธํ•จ

HTTP ๊ตฌ์„ฑ ์š”์†Œ

HTTP ๊ตฌ์„ฑ ์š”์†Œ

1. Method(ํ˜ธ์ถœ/์š”์ฒญ ๋ฐฉ์‹)

  • GET: ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์–ด๋–ค ๋ฆฌ์†Œ์Šค๋ฅผ ์–ป์„ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ๋กœ, ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ์ฐฝ์— URL์„ ์ž…๋ ฅํ•˜๋ฉด GET ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋ƒ„
  • POST: ์›น ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒŒ์‹œํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ผ๋ฐ˜์ ์ž„(ex: ํšŒ์›๊ฐ€์ž…, ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ, ๋Œ“๊ธ€ ์ž‘์„ฑ)
  • ๊ทธ ์™ธ DELETE ๋“ฑ์˜ ์—ฌ๋Ÿฌ ์š”์ฒญ ๋ฐฉ์‹ ์กด์žฌํ•จ
  • ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์š”์ฒญ ๋ฐฉ์‹์ด GET๊ณผ POST์ž„

2. Header(์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ, ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ)

  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ์›ํ•˜๋Š”์ง€
  • ์š”์ฒญ ๋ฐ›์€ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•˜๋Š”์ง€
  • ์š”์ฒญ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฐพ์•˜๋Š”์ง€
  • ์–ด๋–ค ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ์ง€

3. Payload(๋ฐ์ดํ„ฐ, ์‹ค์ œ ๋ฐ์ดํ„ฐ)

  • ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋ณด๋‚ผ ๋•Œ์—๋Š” ํ•ญ์ƒ Payload๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ
  • ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)๊ฐ€ ์š”์ฒญ์„ ํ•  ๋•Œ์—๋„ Payload๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ
    "GET Method๋ฅผ ์ œ์™ธํ•˜๊ณค ๋ชจ๋‘ Payload๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค"๋Š”๊ฒŒ HTTP์—์„œ์˜ ์•ฝ์†์ž„
  • HTML ํ˜น์€ JSON ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์‘๋‹ต ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ