๐ŸŒฑ Spring Boot ์‹œ์ž‘ํ•˜๊ธฐ - 4. HTTP ๊ฐœ๋…๊ณผ ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ, ๋ฉ”์„œ๋“œ ์ดํ•ด

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

Spring

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

๋‚ ์งœ:2025-10-22


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

  • HTTP(HyperText Transfer Protocol)์˜ ๊ฐœ๋…๊ณผ ํŠน์ง• ์ดํ•ด
  • HTTP ๋ฉ”์‹œ์ง€(Request/Response) ๊ตฌ์กฐ ์ดํ•ด
  • ์ฃผ์š” HTTP Method์™€ ํŠน์„ฑ(Safe, Idempotent, Cacheable) ์ดํ•ด

โœ… HTTP๋ž€?

HTTP

  • ์›น์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ํ†ต์‹  ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค.

  • ํŽธ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๊ฒŒ, ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ, ๋ฐ›๋Š” ์‚ฌ๋žŒ, ๋‚ด์šฉ์ด ์ •ํ•ด์ง„ ํ˜•์‹์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

  • โ— ์ค‘์š”: HTTP ๋ฒ„์ „ 1.1, 2.0, 3.0์ด ์žˆ์ง€๋งŒ, ๊ฐ•์˜์—์„œ๋Š” 1.1 ์œ„์ฃผ๋กœ ๋‹ค๋ฃน๋‹ˆ๋‹ค.


HTTP ๋™์ž‘ ์ˆœ์„œ

  • 1.ํด๋ผ์ด์–ธํŠธ(Client)๋Š” ์š”์ฒญ(Request)์„ ๋ณด๋‚ธ ํ›„ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
  • 2.์„œ๋ฒ„(Server)๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ต(Response)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

โœ… HTTP ํŠน์ง•

HTTP๋Š” ๋ถˆํŠน์ • ๋‹ค์ˆ˜์˜ ํ™˜๊ฒฝ์—์„œ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

  • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ(State)๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ์‹ค์ƒํ™œ ๋น„์œ :

  • ์ €์žฅ ๊ธฐ๋Šฅ ์—†๋Š” ๊ฒŒ์ž„์„ ์žฌ์ ‘์†ํ•˜๋ฉด ์ด์ „ ์ ์ˆ˜๋‚˜ ์ƒํƒœ๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ƒํ™ฉ๊ณผ ๊ฐ™์Œ

์žฅ์ 

  • Scale Out(์ˆ˜ํ‰ ํ™•์žฅ) ์šฉ์ด
  • ์š”์ฒญ๋Ÿ‰ ์ฆ๊ฐ€ ์‹œ ์„œ๋ฒ„ ์ฆ์„ค์ด ์‰ฝ๋‹ค

๋‹จ์ 

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์•ผ ํ•จ

ํ•œ๊ณ„์ 

  • ๋ฌด์ƒํƒœ ์„ค๊ณ„๊ฐ€ ์–ด๋ ค์šด ๊ฒฝ์šฐ ์กด์žฌ
  • ๋กœ๊ทธ์ธ, ์ธ์ฆ ๋“ฑ ์ƒํƒœ ๊ด€๋ฆฌ ํ•„์š” โ†’ Cookie, Session, Token ํ™œ์šฉ (์ถ”ํ›„ ํ•™์Šต)

โœ… HTTP ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ

  • HTTP ๋ฉ”์‹œ์ง€๋Š” ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response) ๋‘ ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€(Request Message)

1.Start Line

HTTP Method: GET, POST, PUT, PATCH, DELETE ๋“ฑ

  • Create โ†’ POST
  • Read โ†’ GET
  • Update โ†’ PUT(์ „์ฒด), PATCH(๋ถ€๋ถ„)
  • Delete โ†’ DELETE
  • Request Target(Path): /event, /search?keyword=sparta ๋“ฑ
  • HTTP Version: 1.1

2.Heade

  • Host: spartacodingclub.kr ๋“ฑ
  • ์š”์ฒญ ๊ด€๋ จ ์ถ”๊ฐ€ ์ •๋ณด(์ธ์ฆ, ๋ธŒ๋ผ์šฐ์ €, ์„œ๋ฒ„ ์ •๋ณด ๋“ฑ)

3.Empty Line

  • ํ•„์ˆ˜ ๊ณต๋ฐฑ ํ•œ ์ค„

4.Message Body

  • ์ „์†กํ•  ๋ฐ์ดํ„ฐ (HTML, ์ด๋ฏธ์ง€, JSON ๋“ฑ)
  • GET์˜ ๊ฒฝ์šฐ Body๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ

HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€(Response Message)

1.Start Line

  • HTTP Version
  • Status Code: ์š”์ฒญ ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€
  • Status Text: ์ƒํƒœ ๋ฉ”์‹œ์ง€

2.Header*

  • Response ์ „์šฉ Header ๊ฐ’

3.Empty Lin

  • ํ•„์ˆ˜ ๊ณต๋ฐฑ ํ•œ ์ค„

4.Message Body

  • ์‹ค์ œ ์ „์†ก ๋ฐ์ดํ„ฐ
  • ๋ฐ์ดํ„ฐ ์—†์œผ๋ฉด ๊ณต๋ฐฑ ์กด์žฌ

โœ… HTTP Method

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” Method

Method์—ญํ• ํŠน์ง•
POST๋ฆฌ์†Œ์Šค ์ƒ์„ฑMessage Body ํ†ตํ•ด ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
GET๋ฆฌ์†Œ์Šค ์กฐํšŒMessage Body ์—†์Œ (๊ถŒ์žฅ)
PUT๋ฆฌ์†Œ์Šค ์ „์ฒด ์ˆ˜์ •๊ธฐ์กด ๋ฐ์ดํ„ฐ ๋ฎ์–ด์“ฐ๊ธฐ
PATCH๋ฆฌ์†Œ์Šค ์ผ๋ถ€ ์ˆ˜์ •์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋งŒ ๋ณ€๊ฒฝ
DELETE๋ฆฌ์†Œ์Šค ์‚ญ์ œ์‚ญ์ œ ์ˆ˜ํ–‰

๊ธฐํƒ€ Method

  • HEAD: GET์—์„œ Body ์ œ์™ธ, ์ƒํƒœ ์ค„๊ณผ Header๋งŒ ๋ฐ˜ํ™˜
  • OPTIONS: ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์—์„œ ์ง€์› ๊ฐ€๋Šฅํ•œ Method ํ™•์ธ

โœ… HTTP Method ์†์„ฑ

1.์•ˆ์ „์„ฑ(Safe)

  • GET: ์•ˆ์ „ (๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ์—†์Œ)
  • POST, PUT, PATCH, DELETE: ์•ˆ์ „ํ•˜์ง€ ์•Š์Œ (๋ฐ์ดํ„ฐ ์ƒ์„ฑ/์ˆ˜์ •/์‚ญ์ œ)

2.๋ฉฑ๋“ฑ์„ฑ(Idempotent)

  • ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•ด๋„ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผ
  • GET, PUT, DELETE: ๋ฉฑ๋“ฑ์„ฑ ์žˆ์Œ
  • POST: ๋ฉฑ๋“ฑ์„ฑ ์—†์Œ (์˜ˆ: ๊ฒŒ์‹œ๊ธ€ ์ค‘๋ณต ์ƒ์„ฑ, ์†ก๊ธˆ ์ค‘๋ณต)
  • ๋ฉฑ๋“ฑ์„ฑ์€ ์‹คํŒจ ์‹œ ์žฌ์‹œ๋„ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํŒ๋‹จ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ

3.์บ์‹œ ๊ฐ€๋Šฅ์„ฑ(Cacheable)

  • ์š”์ฒญ ์‘๋‹ต์„ ์ €์žฅํ•˜์—ฌ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€
  • GET, HEAD, POST ๊ฐ€๋Šฅ (์ฃผ๋กœ GET, HEAD ์‚ฌ์šฉ)
  • ์ •์  ์ž์›(HTML, CSS, ์ด๋ฏธ์ง€, JS ๋“ฑ) ์บ์‹ฑ์— ํ™œ์šฉ

์บ์‹œ(Cache)๋ž€?

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญํ–ˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜์—ฌ,๋งค๋ฒˆ ์ƒˆ๋กœ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ  ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„

์ •๋ฆฌ

  • HTTP: ์›น์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ํ†ต์‹  ๊ทœ์•ฝ
  • ๋ฌด์ƒํƒœ(Stateless): ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Œ โ†’ Cookie, Session, Token ํ™œ์šฉ ํ•„์š”
  • HTTP ๋ฉ”์‹œ์ง€: Request์™€ Response๋กœ ๊ตฌ์„ฑ
  • HTTP Method: ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹ (POST, GET, PUT, PATCH, DELETE ๋“ฑ)
  • ethod ์†์„ฑ: ์•ˆ์ „์„ฑ, ๋ฉฑ๋“ฑ์„ฑ, ์บ์‹œ ๊ฐ€๋Šฅ์„ฑ ์ดํ•ด โ†’ ์žฌ์‹œ๋„, ์ค‘๋ณต ์š”์ฒญ ์ฒ˜๋ฆฌ ๋“ฑ ํ™œ์šฉ
profile
๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ•œ ๊ฑธ์Œ

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