STUDY๐Ÿ„

[HTTP] 4. HTTP ๋ฉ”์„œ๋“œ

์ด๋ฆฌ์ญ 2025. 3. 2. 16:23

์•ˆ๋…•ํ•˜์„ธ์š”!

์˜ค๋Š˜์€ HTTP ๋ฉ”์„œ๋“œ๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•ด๋ณผ๊ฒŒ์š” ๊ณ ๊ณ !!


1. HTTP API๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž. (๊ณผ์ •)

1-1. ์š”๊ตฌ์‚ฌํ•ญ - ํšŒ์› ์ •๋ณด ๊ด€๋ฆฌ API๋ฅผ ๋งŒ๋“ค์–ด๋ผ!

  • ํšŒ์› ๋ชฉ๋ก ์กฐํšŒ
  • ํšŒ์› ์กฐํšŒ
  • ํšŒ์› ๋“ฑ๋ก
  • ํšŒ์› ์ˆ˜์ •
  • ํšŒ์› ์‚ญ์ œ

 

1-2. API URI ์„ค๊ณ„

URI = Uniform Resource Identifier
  • ํšŒ์› ๋ชฉ๋ก ์กฐํšŒ: /read-member-list
  • ํšŒ์› ์กฐํšŒ: /read-member-by-id
  • ํšŒ์› ๋“ฑ๋ก: /create-member
  • ํšŒ์› ์ˆ˜์ •: /update-member
  • ํšŒ์› ์‚ญ์ œ: /delete-member

URI ์„ค๊ณ„ ํ›„์— ๊ฐœ๋ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ํ•œ ๊ฐ€์ง€ ์˜๋ฌธ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ณผ์—ฐ ์ข‹์€ URI ์„ค๊ณ„์ผ๊นŒ์š”?

์ •๋‹ต์€ NO!

 

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€! ๋ฆฌ์†Œ์Šค ์‹๋ณ„์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

1-2(1). API URI ๊ณ ๋ฏผ

๋ฆฌ์†Œ์Šค๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

๋ฆฌ์†Œ์Šค๋ž€ ํšŒ์›์„ ๋“ฑ๋กํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ณ  ์กฐํšŒํ•˜๋Š” ๋“ฑ์˜ ํ–‰์œ„๋ฅผ ๋œปํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด "๊ฐ•์•„์ง€๋ฅผ ์‚ฐ์ฑ…์‹œ์ผœ๋ผ"๋ผ๋Š” ๋ฌธ์žฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๋ฆฌ์†Œ์Šค๋Š” ์‚ฐ์ฑ…์‹œ์ผœ๋ผ๊ฐ€ ์•„๋‹Œ ๊ฐ•์•„์ง€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ฆ‰, ํšŒ์›์ด๋ผ๋Š” ๊ฐœ๋… ์ž์ฒด๊ฐ€ ๋ฆฌ์†Œ์Šค๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ๋ฆฌ์†Œ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์‹๋ณ„ํ•˜๋Š”๊ฒŒ ์ข‹์„๊นŒ์š”?

ํšŒ์›์„ ๋“ฑ๋กํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ณ  ์กฐํšŒํ•˜๋Š” ๋“ฑ์˜ ํ–‰์œ„๋Š” ๋ชจ๋‘ ๋ฐฐ์ œํ•˜๊ณ  ํšŒ์›์ด๋ผ๋Š” ๋ฆฌ์†Œ์Šค๋งŒ ์‹๋ณ„ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ฆ‰, ํšŒ์› ๋ฆฌ์†Œ์Šค๋ฅผ URI์— ๋งคํ•‘ํ•˜๋ฉด ๋œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

 

1-2(2). API URI ์„ค๊ณ„

  • ํšŒ์› ๋ชฉ๋ก ์กฐํšŒ: /members
  • ํšŒ์› ์กฐํšŒ: /members/{id}
  • ํšŒ์› ๋“ฑ๋ก: /members{id}
  • ํšŒ์› ์ˆ˜์ •: /members/{id}
  • ํšŒ์› ์‚ญ์ œ: /members/{id}

์ด๋ ‡๊ฒŒ ํšŒ์›์„ ๊ธฐ์ค€์œผ๋กœ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

URI ๊ณ„์ธต ๊ตฌ์กฐ ํ™œ์šฉํ•ด์„œ ํšŒ์›์€ ์—ฌ๋Ÿฌ ๋ช…์ด๋‹ˆ๊นŒ ๋ณต์ˆ˜ ๋‹จ์–ด์ธ members๋กœ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ๋ณด๋ฉด ์•„์‹œ๋‹ค์‹œํ”ผ ํšŒ์› ์กฐํšŒ๋ถ€ํ„ฐ ํšŒ์› ์‚ญ์ œ๊นŒ์ง€ /members/{id}๋กœ ๋‹ค ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฑฐ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ• ๊นŒ์š”?

 

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋ฆฌ์†Œ์Šค์™€ ํ–‰์œ„๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๊นŒ ์œ„์—์„œ ์–˜๊ธฐํ•œ URI๋Š” ๋ฆฌ์†Œ์Šค(ํšŒ์›)๋งŒ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ , ๋ฆฌ์†Œ์Šค์™€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํ–‰์œ„๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฆฌ์†Œ์Šค: ํšŒ์› (๋ช…์‚ฌ)
  • ํ–‰์œ„: ์กฐํšŒ, ๋“ฑ๋ก, ์‚ญ์ œ, ๋ณ€๊ฒฝ (๋™์‚ฌ)

์ด๋Ÿฐ ์‹์œผ๋กœ ๋ง์ด์ฃ .

๊ทธ๋Ÿผ ์ด ํ–‰์œ„(๋ฉ”์„œ๋“œ)๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ• ๊นŒ์š”?

์ด ์งˆ๋ฌธ์— ๋Œ€ํ•ด์„œ ํ•ด๊ฒฐ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” HTTP ๋ฉ”์„œ๋“œ๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


2. HTTP ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜

2-1. ์ฃผ์š” ๋ฉ”์„œ๋“œ (GET, POST, PUT, PATCH, DELETE)

  • GET: ๋ฆฌ์†Œ๋“œ ์กฐํšŒ
  • POST: ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์ฃผ๋กœ ๋“ฑ๋ก์— ์‚ฌ์šฉ
  • PUT: ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒด, ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑ (ํŒŒ์ผ์„ ํด๋”์— ๋„ฃ์„ ๋•Œ์™€ ๋น„์Šท)
  • PATCH: ๋ฆฌ์†Œ์Šค ๋ถ€๋ถ„ ๋ณ€๊ฒฝ (ex. ํšŒ์›์˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ ๊ฐ™์€๊ฑฐ..?)
  • DELETE: ๋ฆฌ์†Œ์Šค ์‚ญ์ œ

 

2-1(1). GET

GET์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ๋Š” query(์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ, ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง)๋ฅผ ํ†ตํ•ด์„œ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ณณ์ด ๋งŽ์•„์„œ ๊ถŒ์žฅํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com

GET์ด ์ •ํ™•ํžˆ ์–ด๋–ค ๋ฉ”์„œ๋“œ์ธ์ง€ ๊ทธ๋ฆผ์„ ํ†ตํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค ์กฐํšŒ1 - ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ

ํด๋ผ์ด์–ธํŠธ๊ฐ€ id๊ฐ€ 100๋ฒˆ์ธ ํ•™์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด๋‹ฌ๋ผ๊ณ  ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค ์กฐํšŒ2 - ์„œ๋ฒ„ ๋„์ฐฉ

์š”์ฒญํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ์„œ๋ฒ„์— ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค ์กฐํšŒ3 - ์‘๋‹ต ๋ฐ์ดํ„ฐ

์„œ๋ฒ„๊ฐ€ id๊ฐ€ 100๋ฒˆ์ธ ํ•™์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•ด์„œ ์‘๋‹ตํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ํ–‰์œ„๋ฅผ ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ GET์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

2-1(2). POST

POST๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ ์ž…๋‹ˆ๋‹ค.

GET๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ์„œ๋ฒ„๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

POST์˜ ๋Œ€ํ‘œ์ ์ธ ํŠน์ง•์€ ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ , ์ฃผ๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋กœ ์‹ ๊ทœ ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก, ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ(๋ณ€๊ฒฝ๋œ ํ”„๋กœ์„ธ์Šค ๋ฐ”๊ฟˆ ๋“ฑ)์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

๊ฟ€ํŒ!!

์• ๋งคํ•˜๊ฑฐ๋‚˜ ์ด๊ฒŒ ๋ญ์ง€? ์‹ถ์œผ๋ฉด ์™ ๋งŒํ•˜๋ฉด POST ์ž…๋‹ˆ๋‹ค.

POST /members HTTP/1.1
Content-Type: application/json

{
     "username": "song",
     "age": 20
}

POST๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ค ๋ฉ”์„œ๋“œ์ธ์ง€ ๊ทธ๋ฆผ์„ ํ†ตํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก1 - ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฆ„์ด song์ด๊ณ  ๋‚˜์ด๊ฐ€ 20์‚ด์ธ ํ•™์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋“ฑ๋กํ•ด๋‹ฌ๋ผ๊ณ  ์„œ๋ฒ„์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌ(์š”์ฒญ)ํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก2 - ์‹ ๊ทœ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ

์‹ ๊ทœ ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž(/members/100)๋ฅผ ์ƒ์„ฑํ•ด์„œ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก3 - ์‘๋‹ต ๋ฐ์ดํ„ฐ

์„œ๋ฒ„๊ฐ€ ์‹ ๊ทœ ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž(/members/100)์— ํ•™์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ฑ๋ก๋˜์—ˆ๋‹ค๊ณ  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

 

 

POST๋Š” ์ค‘์š”ํ•œ ์ ์ด ๋งŽ๊ธฐ์— ์˜ˆ์‹œ์™€ ์ •๋ฆฌ๋ณธ์„ ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋จผ์ €, POST๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๋œป์ผ๊นŒ์š”?

 POST๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

(์˜ˆ์‹œ ์œ„์ฃผ๋กœ ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค)

 

1. HTML ์–‘์‹์— ์ž…๋ ฅ๋œ ํ•„๋“œ์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์Šค์— ์ œ๊ณต

ex) HTML FORM์— ์ž…๋ ฅํ•œ ์ •๋ณด๋กœ ํšŒ์› ๊ฐ€์ž…, ์ฃผ๋ฌธ ๋“ฑ์—์„œ ์‚ฌ์šฉ

2. ๊ฒŒ์‹œํŒ, ๋‰ด์Šค ๊ทธ๋ฃน, ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ, ๋ธ”๋กœ๊ทธ ๋˜๋Š” ์œ ์‚ฌํ•œ ๊ธฐ์‚ฌ ๊ทธ๋ฃน์— ๋ฉ”์‹œ์ง€ ๊ฒŒ์‹œ

ex) ๊ฒŒ์‹œํŒ ๊ธ€์“ฐ๊ธฐ, ๋Œ“๊ธ€ ๋‹ฌ๊ธฐ

3. ์„œ๋ฒ„๊ฐ€ ์•„์ง ์‹๋ณ„ํ•˜์ง€ ์•Š์€ ์ƒˆ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ

ex) ์‹ ๊ทœ ์ฃผ๋ฌธ ์ƒ์„ฑ

4. ๊ธฐ์กด ์ž์›์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

ex) ํ•œ ๋ฌธ์„œ ๋์— ๋‚ด์šฉ ์ถ”๊ฐ€ํ•˜๊ธฐ

 

๊ฒฐ๊ตญ ์ด ๋ฆฌ์†Œ์Šค URI์— POST ์š”์ฒญ์ด ์˜ค๋ฉด ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€ ๋ฆฌ์†Œ์Šค๋งˆ๋‹ค ๋”ฐ๋กœ ์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์ •ํ•ด์ง„ ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .

 

POST ์ตœ์ข…์ ์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

<POST ๋ฉ”์„œ๋“œ๊ฐ€ ํ•˜๋Š” ์ผ>

1. ์ƒˆ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ(๋“ฑ๋ก)

- ์„œ๋ฒ„๊ฐ€ ์•„์ง ์‹๋ณ„ํ•˜์ง€ ์•Š์€ ์ƒˆ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ

 

2. ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

- ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

- ex) ์ฃผ๋ฌธ์—์„œ ๊ฒฐ์ œ ์™„๋ฃŒ -> ๋ฐฐ๋‹ฌ ์‹œ์ž‘ -> ๋ฐฐ๋‹ฌ ์™„๋ฃŒ ์ฒ˜๋Ÿผ ๋‹จ์ˆœํžˆ ๊ฐ’ ๋ณ€๊ฒฝ์„ ๋„˜์–ด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ

 

- POST์˜ ๊ฒฐ๊ณผ๋กœ ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

- ex) POST /orders/{orderId}/start-delivery (์ปจํŠธ๋กค URI)

 

์ด ์˜ˆ์‹œ์—์„œ ๊ตต์€ ๊ธ€์”จ์ธ start-delivery ๋ถ€๋ถ„์„ ๋ณด๋ฉด ๋ถ„๋ช… ๋ฆฌ์†Œ์Šค๋Š” ๋ช…์‚ฌ๊ฐ€ ์˜จ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋™์‚ฌ๊ฐ€ ์™”์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋™์‚ฌ์˜ URI๋ฅผ ์ปจํŠธ๋กค URI๋ผ๊ณ  ํ•˜๊ณ , ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์ƒˆ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์•„๋„ POST๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

3. ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์• ๋งคํ•œ ๊ฒฝ์šฐ

- ex) JSON์œผ๋กœ ์กฐํšŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์•ผ ํ•˜๋Š”๋ฐ, GET ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ

=> ์กฐํšŒ๋ผ ์›๋ž˜ GET์ธ๋ฐ ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์˜ ๋‚ด์šฉ์„ ์ „๋‹ฌํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ณณ์ด ๋งŽ์•„์„œ ์ด๋Ÿฐ ์• ๋งคํ•œ ๊ฒฝ์šฐ์—๋Š” POST๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

 

2-1(3). PUT

PUT์€ ๋Œ€ํ‘œ์ ์œผ๋กœ 2๊ฐ€์ง€ ํŠน์ง•์ด ์žˆ๋Š” ๋ฉ”์„œ๋“œ ์ž…๋‹ˆ๋‹ค.

 

์ฒซ ๋ฒˆ์งธ๋กœ, ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒด(์™„์ „ํžˆ)ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ๋Œ€์ฒดํ•˜๊ณ , ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•ด์„œ ํŒŒ์ผ ๋ณต์‚ฌ์ฒ˜๋Ÿผ ๊ธฐ์กด ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ๋ฎ์–ด์“ฐ๊ณ  ๊ธฐ์กด ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์ƒ์„ฑํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

 

๋‘ ๋ฒˆ์งธ๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜๋ฅผ ์•Œ๊ณ  URI๋ฅผ ์ง€์ •ํ•œ๋‹ค๋Š” ๋œป์ด๊ณ , ์ด๊ฑด PUT๋งŒ์˜ ํŠน์ง•์ž…๋‹ˆ๋‹ค.

 

POST์™€์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์ž๋ฉด...

POST๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜๊ฐ€ 100๋ฒˆ์ธ์ง€ 200๋ฒˆ์ธ์ง€.. ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, PUT์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค์˜ ์œ„์น˜๋ฅผ ์•Œ์•„์„œ URI๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

PUT /members/100 HTTP/1.1
Content-Type: application/json
{
     "username": "ssari",
     "age": 25
}

PUT์ด ์ •ํ™•ํžˆ ์–ด๋–ค ๋ฉ”์„œ๋“œ์ธ์ง€ ๊ทธ๋ฆผ์„ ํ†ตํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ1

๊ธฐ์กด /members/100์—๋Š” ์ด๋ฆ„์ด song์ด๊ณ  ๋‚˜์ด๊ฐ€ 20์‚ด์ธ ํ•™์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.ํด๋ผ์ด์–ธํŠธ๊ฐ€ /members/100์— ์ด๋ฆ„์ด ssari์ด๊ณ  ๋‚˜์ด๊ฐ€ 25์‚ด์ธ ํ•™์ƒ์˜ ๋ฐ์ดํ„ฐ๋กœ ๋Œ€์ฒดํ•˜๋ผ๊ณ  ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ2

์„œ๋ฒ„๊ฐ€ /members/100์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญํ•œ ๋ฆฌ์†Œ์Šค๋กœ ๋Œ€์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

  • ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ1

์„œ๋ฒ„์—๋Š” ์ด์ „ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ /members/100์— ์ด๋ฆ„์ด ssari์ด๊ณ  ๋‚˜์ด๊ฐ€ 25์‚ด์ธ ํ•™์ƒ์˜ ๋ฐ์ดํ„ฐ๋กœ ๋Œ€์ฒดํ•˜๋ผ๊ณ  ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ2

์„œ๋ฒ„๊ฐ€ ์‹ ๊ทœ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค(๋Œ€์ฒด๋œ ๋ฐ์ดํ„ฐ ๋“ค์–ด๊ฐ€์žˆ์Œ).

 

 

  • ์ฃผ์˜!! - ๋ฆฌ์†Œ์Šค๋ฅผ ์™„์ „ํžˆ ๋Œ€์ฒด1

๊ธฐ์กด /members/100์—๋Š” ์ด๋ฆ„์ด song์ด๊ณ  ๋‚˜์ด๊ฐ€ 20์‚ด์ธ ํ•™์ƒ์˜ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ /members/100์— ์žˆ๋Š” ํ•™์ƒ์˜ ์ •๋ณด์—์„œ ์ด๋ฆ„ ํ•„๋“œ ์—†์ด ๋‚˜์ด๋งŒ 25์‚ด๋กœ ๋Œ€์ฒด(์ˆ˜์ •)ํ•˜๋ผ๊ณ  ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

 

  • ์ฃผ์˜!! - ๋ฆฌ์†Œ์Šค๋ฅผ ์™„์ „ํžˆ ๋Œ€์ฒด2

/members/100์— ์žˆ๋˜ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค ๋‚ ๋ผ๊ฐ€๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญํ•œ ๋‚˜์ด 25์‚ด ๋ฆฌ์†Œ์Šค๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

2-1(4). PATCH

PATCH๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋ถ€๋ถ„๋งŒ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ž…๋‹ˆ๋‹ค.

PATCH๊ฐ€ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ƒ๊ธด ๋ฉ”์†Œ๋“œ์—ฌ์„œ ๋งŒ์•ฝ์— PATCH๋ฅผ ์ง€์›์„ ์•ˆ ํ•  ๊ฒฝ์šฐ์—๋Š” POST๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

PATCH /members/100 HTTP/1.1
Content-Type: application/json
{
     "age": 25
}

PATCH๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ค ๋ฉ”์„œ๋“œ์ธ์ง€ ๊ทธ๋ฆผ์„ ํ†ตํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค ๋ถ€๋ถ„ ๋ณ€๊ฒฝ1

ํด๋ผ์ด์–ธํŠธ๊ฐ€ /members/100 ๋ฆฌ์†Œ์Šค์—์„œ ๋‚˜์ด๋งŒ 25์‚ด๋กœ ๋ฐ”๊ฟ”๋‹ฌ๋ผ๊ณ  ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค ๋ถ€๋ถ„ ๋ณ€๊ฒฝ2

ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญํ•œ ๋Œ€๋กœ ์ด๋ฆ„์€ ๊ทธ๋Œ€๋กœ ๋†”๋‘๊ณ  ๋‚˜์ด๋งŒ 25์‚ด๋กœ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

 

2-1(5). DELETE

DELETE๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ž…๋‹ˆ๋‹ค.

DELETE /members/100 HTTP/1.1
Host: localhost:8080

 DELETE๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ค ๋ฉ”์„œ๋“œ์ธ์ง€ ๊ทธ๋ฆผ์„ ํ†ตํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค ์ œ๊ฑฐ1

ํด๋ผ์ด์–ธํŠธ๊ฐ€ id๊ฐ€ 100๋ฒˆ์ธ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ฑฐํ•ด๋‹ฌ๋ผ๊ณ  ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋ฆฌ์†Œ์Šค ์ œ๊ฑฐ2

/members/100 ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

2-2. ๊ธฐํƒ€ ๋ฉ”์„œ๋“œ

  • HEAD: GET๊ณผ ๋™์ผํ•˜์ง€๋งŒ ๋ฉ”์‹œ์ง€ ๋ถ€๋ถ„(๋ฉ”์‹œ์ง€ ๋ฐ”๋””) ์ œ์™ธํ•˜๊ณ  ์ƒํƒœ ์ค„๊ณผ ํ—ค๋”๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • OPTIONS: ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ†ต์‹  ๊ฐ€๋Šฅ ์˜ต์…˜(๋ฉ”์„œ๋“œ)์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. (์ฃผ๋กœ CORS์—์„œ ์‚ฌ์šฉ)
  • CONNECT: ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค๋กœ ์‹๋ณ„๋˜๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•œ ํ„ฐ๋„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. (๊ฑฐ์˜ ์‚ฌ์šฉX)
  • TRACE: ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ๋ฉ”์‹œ์ง€ ๋ฃจํ”„๋ฐฑ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. (๊ฑฐ์˜ ์‚ฌ์šฉX)

3. HTTP ๋ฉ”์„œ๋“œ์˜ ์†์„ฑ

3-1. ์•ˆ์ „ (Safe)

  • ํ˜ธ์ถœํ•ด๋„ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • Q. ๊ณ„์† ํ˜ธ์ถœํ•˜๋‹ค๊ฐ€ ๋กœ๊ทธ ๊ฐ™์€๊ฒŒ ์Œ“์—ฌ์„œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด?
    • A. ์•ˆ์ „์€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋งŒ ๊ณ ๋ คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฐ ๋ถ€๋ถ„๊นŒ์ง€ ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • GET, PUT, PATCH, DELETE๋Š” ์•ˆ์ „O / POST๋Š” ์•ˆ์ „X

 

3-2. ๋ฉฑ๋“ฑ (Idempotent)

  • f(f(x)) = f(x) => ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•˜๋“  ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•˜๋“  ๊ฒฐ๊ณผ๊ฐ€ ๋˜‘๊ฐ™๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
  • ๋ฉฑ๋“ฑ ๋ฉ”์„œ๋“œ
    • GET: ํ•œ ๋ฒˆ ์กฐํšŒํ•˜๋“ , ์—ฌ๋Ÿฌ๋ฒˆ ์กฐํšŒํ•˜๋“  ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค. (๋˜‘๊ฐ™์€ ์ •๋ณด ๊ณ„์† ์กฐํšŒํ•ด๋ดค์ž ๋˜‘๊ฐ™์Œ)
    • PUT: ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋„ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค. (๋˜‘๊ฐ™์€ ํŒŒ์ผ ๊ณ„์† ์—…๋กœ๋“œํ•ด๋„ ์•„์˜ˆ ๋‚ ๋ฆฌ๊ณ  ๋ฎ์–ด์“ฐ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๊ธฐ์— ๊ณ„์† ๋˜‘๊ฐ™์Œ)
    • DELETE: ๊ฒฐ๊ณผ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋„ ์‚ญ์ œ๋œ ๊ฒฐ๊ณผ๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • POST: ๋ฉฑ๋“ฑ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด ๊ฐ™์€ ๊ฒฐ์ œ๊ฐ€ ์ค‘๋ณตํ•ด์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. (๋งŒ์•ฝ์— ์‚ฌ์žฅ์ด ๋ฐฐ์†ก์„ 2๋ฒˆ ๋ˆ„๋ฅด๋ฉด ๋ฌธ์ œ๊ฐ€ ์ผ์–ด๋‚จ)
  • ํ™œ์šฉ
    • ์ž๋™ ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜
    • Q. ์„œ๋ฒ„๊ฐ€ TIMEOUT ๋“ฑ์œผ๋กœ ์ •์ƒ ์‘๋‹ต์„ ์ฃผ์ง€ ๋ชปํ–ˆ์„ ๋•Œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ™์€ ์š”์ฒญ์„ ๋‹ค์‹œ ํ•ด๋„ ๋˜๋Š”๊ฐ€?
    • A. ๋ฉฑ๋“ฑ์ด๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
  • Q. ์žฌ์š”์ฒญ ์ค‘๊ฐ„์— ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•ด๋ฒ„๋ฆฌ๋ฉด?
    • ์‚ฌ์šฉ์ž1: GET -> username:A, age:20 (์กฐํšŒ)
    • ์‚ฌ์šฉ์ž2: PUT -> username:A, age:40 (์ค‘๊ฐ„์— ๋Œ€์ฒดํ•ด๋ฒ„๋ฆผ)
    • ์‚ฌ์šฉ์ž1: GET -> username:A, age:40 => ์‚ฌ์šฉ์ž2์˜ ์˜ํ–ฅ์œผ๋กœ ๋ฐ”๋€ ๋ฐ์ดํ„ฐ ์กฐํšŒ(์ฒ˜์Œ ์กฐํšŒํ•  ๋•Œ๋ž‘ ๋‹ค๋ฆ„)
  • A. ๋ฉฑ๋“ฑ์€ ์™ธ๋ถ€ ์š”์ธ์œผ๋กœ ์ธํ•ด ์ค‘๊ฐ„์— ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ ๊นŒ์ง€๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์•Œ์•„์„œ ์ฒดํฌํ•˜๋„๋ก!

 

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

์œ„์˜ 2๊ฐœ์˜ ๊ฐœ๋…๋ณด๋‹ค ๋” ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. (์ž์„ธํ•œ ์„ค๋ช…์€ ๋‚˜์ค‘์—..)

  • Q. ์‘๋‹ต ๊ฒฐ๊ณผ ๋ฆฌ์†Œ์Šค๋ฅผ ์บ์‹œํ•ด์„œ ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”๊ฐ€?
  • A. GET, HEAD, POST, PATCH๋Š” ์บ์‹œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • BUT, ์‹ค์ œ๋กœ๋Š” GET, HEAD ์ •๋„๋งŒ ์บ์‹œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • POST, PATCH๋Š” ๋ณธ๋ฌธ ๋‚ด์šฉ๊นŒ์ง€ ์บ์‹œ ํ‚ค๋กœ ๊ณ ๋ ค(๋˜‘๊ฐ™์€ ์บ์‹œ ํ‚ค์—ฌ์•ผ ํ•จ)ํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ตฌํ˜„์ด ์‰ฝ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.