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

 

1. HTTP API ๋งŒ๋“ค๊ธฐ

<ํšŒ์› ์ •๋ณด ๊ด€๋ฆฌ API ๋งŒ๋“ค๊ธฐ>

 

[์š”๊ตฌ์‚ฌํ•ญ]

- ํšŒ์› ๋ชฉ๋ก ์กฐํšŒ

- ํšŒ์› ์กฐํšŒ

- ํšŒ์› ๋“ฑ๋ก

- ํšŒ์› ์ˆ˜์ •

- ํšŒ์› ์‚ญ์ œ

 

[URI]

- ํšŒ์› ๋ชฉ๋ก ์กฐํšŒ /read-member-list

- ํšŒ์› ์กฐํšŒ /read-member-by-id

- ํšŒ์› ๋“ฑ๋ก /create-member

- ํšŒ์› ์ˆ˜์ • /update-member

- ํšŒ์› ์‚ญ์ œ /delete-member

 

์ด๊ฒŒ ์ข‹์€ URI ์„ค๊ณ„์ผ๊นŒ?
-> ๋ฆฌ์†Œ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๊ณ„ํ•ด์•ผํ•จ! (์ค‘์š”) -> ๋ฆฌ์†Œ์Šค ์‹๋ณ„

 

API URI ๊ณ ๋ฏผ

- ๋ฆฌ์†Œ์Šค์˜ ์˜๋ฏธ

   > ํšŒ์›์„ ๋“ฑ๋กํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ณ  ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ด ๋ฆฌ์†Œ์Šค๊ฐ€ ์•„๋‹ˆ๋‹ค!

   > ex) ๋ฏธ๋„ค๋ž„์„ ์บ๋ผ -> ๋ฏธ๋„ค๋ž„์ด ๋ฆฌ์†Œ์Šค

   > ํšŒ์›์ด๋ผ๋Š” ๊ฐœ๋… ์ž์ฒด๊ฐ€ ๋ฐ”๋กœ ๋ฆฌ์†Œ์Šค

 

- ๋ฆฌ์†Œ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์‹๋ณ„ํ•˜๋Š”๊ฒŒ ์ข‹์„๊นŒ?
   > ํšŒ์›์„ ๋“ฑ๋กํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ณ  ์กฐํšŒํ•˜๋Š” ๊ฒƒ์„ ๋ชจ๋‘ ๋ฐฐ์ œ

   > ํšŒ์›์ด๋ผ๋Š” ๋ฆฌ์†Œ์Šค๋งŒ ์‹๋ณ„ํ•˜๋ฉด ๋จ -> ํšŒ์› ๋ฆฌ์†Œ์Šค๋ฅผ URI์— ๋งตํ•‘

/members/{id}

 

๋ฆฌ์†Œ์Šค์™€ ํ–‰์œ„๋ฅผ ๋ถ„๋ฆฌ : ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ!

- URI๋Š” ๋ฆฌ์†Œ์Šค๋งŒ ์‹๋ณ„!

- ๋ฆฌ์†Œ์Šค์™€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœํ•˜๋Š” ํ–‰์œ„๋ฅผ ๋ถ„๋ฆฌ

   > ๋ฆฌ์†Œ์Šค  :  ํšŒ์›

   > ํ–‰์œ„     :  ์กฐํšŒ/๋“ฑ๋ก/์‚ญ์ œ/๋ณ€๊ฒฝ

- ๋ฆฌ์†Œ์Šค๋Š” ๋ช…์‚ฌ, ํ–‰์œ„๋Š” ๋™์‚ฌ (๋ฏธ๋„ค๋ž„์„ ์บ๋ผ)

- ํ–‰์œ„(๋ฉ”์„œ๋“œ)๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„? -> HTTP ๋ฉ”์„œ๋“œ๊ฐ€ ํ•ด์คŒ


2. HTTP ๋ฉ”์„œ๋“œ - GET, POST

HTTP ๋ฉ”์„œ๋“œ

GET         :   ๋ฆฌ์†Œ์Šค ์กฐํšŒ
POST       :   ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์ฃผ๋กœ ๋“ฑ๋ก์— ์‚ฌ์šฉ

PUT         :   ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒด, ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑ
PATCH    :   ๋ฆฌ์†Œ์Šค ๋ถ€๋ถ„ ๋ณ€๊ฒฝ
DELETE   :   ๋ฆฌ์†Œ์Šค ์‚ญ์ œ

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

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

 

1) GET

- ๋ฆฌ์†Œ์Šค ์กฐํšŒ

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

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

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

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

๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋ฐ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ ์ฐพ๊ธฐ

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

๋ฐ์ดํ„ฐ ์ฐพ์€ ํ›„ ์‘๋‹ต

2) POST

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

- ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ

- ์„œ๋ฒ„๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ

   ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰

- ์ฃผ๋กœ ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋กœ ์‹ ๊ทœ ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก, ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ

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

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

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

- ์‹ ๊ทœ๋กœ ์ž์› ์ƒ์„ฑ๋˜๋ฉด HTTP/1.1 201 Created ๋ผ๊ณ  ๋ณด๋ƒ„ (200์œผ๋กœ ๋ณด๋‚ด๋„๋จ)

- 201๋กœ ๋ณด๋‚ผ๋•Œ Location ๋ณด๋‚ด์คŒ (์‹ ๊ทœ ์ƒ์„ฑ๋œ ์ž์›์˜ path ๋ณด๋‚ด์ฃผ๊ณ , ๋“ฑ๋ก๋œ ์ž์› ๋ฐ์ดํ„ฐ๋„ ๋ณด๋‚ด์คŒ)

 

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

- ์ŠคํŽ™ : POST ๋ฉ”์„œ๋“œ๋Š” ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ฆฌ์†Œ์Šค์˜ ๊ณ ์œ ํ•œ ์˜๋ฏธ ์ฒด๊ณ„์— ๋”ฐ๋ผ ์š”์ฒญ์— ํฌํ•จ๋œ ํ‘œํ˜„์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์š”์ฒญ

- POST๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์— ์‚ฌ์šฉ๋จ

1) HTML ์–‘์‹์— ์ž…๋ ฅ๋œ ํ•„๋“œ์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์Šค์— ์ œ๊ณต
    ex) HTML FORM์— ์ž…๋ ฅํ•œ ์ •๋ณด๋กœ ํšŒ์›๊ฐ€์ž…, ์ฃผ๋ฌธ ๋“ฑ์— ์‚ฌ์šฉ

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

3) ์„œ๋ฒ„๊ฐ€ ์•„์ง ์‹๋ณ„ํ•˜์ง€ ์•Š์€ ์ƒˆ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ
     ex) ์‹ ๊ทœ ์ฃผ๋ฌธ ์ƒ์„ฑ

4) ๊ธฐ์กด ์ž์›์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
     ex) ํ•œ ๋ฌธ์„œ ๋์— ๋‚ด์šฉ ์ถ”๊ฐ€

 

ํ•ต์‹ฌ)
์ด ๋ฆฌ์†Œ์Šค URI์—(/members) POST์š”์ฒญ์ด ์˜ค๋ฉด ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€ ๋ฆฌ์†Œ์Šค๋งˆ๋‹ค ๋”ฐ๋กœ ์ •ํ•ด์•ผํ•จ -> ์ •ํ•ด์ง„ ๊ฒƒ์ด ์—†์Œ 

 

์ •๋ฆฌ)

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

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

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

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

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

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

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

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

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

   - ์• ๋งคํ•˜๋ฉด POST


3. HTTP ๋ฉ”์„œ๋“œ - PUT, PATCH, DELETE

1) PUT

๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒด

- ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ๋Œ€์ฒด

- ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑ

- ์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐํ•˜๋ฉด ๋ฎ์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ

 

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ (์ค‘์š”)

- ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค ์œ„์น˜๋ฅผ ์•Œ๊ณ  URI ์ง€์ •

- POST์™€ ์ฐจ์ด์ 

  POST - ํด๋ผ์ด์–ธํŠธ๊ฐ€ /members ์–ด๋””์— ์ง‘์–ด๋„ฃ๋Š”์ง€ ๋ชจ๋ฆ„

  PUT    - ํด๋ผ์ด์–ธํŠธ๊ฐ€ /members 100์— ์ง‘์–ด๋„ฃ๋Š”๋‹ค๊ณ  ๋ช…์‹œ

 

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

- ํด๋ผ์ด์–ธํŠธ๊ฐ€ 100์— ๋„ฃ๋Š”๋‹ค๊ณ  ์ง€์ •

- ์„œ๋ฒ„์— 100์ด ์ด๋ฏธ ์žˆ๋‹ค๋ฉด ๋ฆฌ์†Œ์Šค ๋Œ€์ฒด

 

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

(ํŠน์ • ๋ฆฌ์†Œ์Šค ์ˆ˜์ •/๋ณ€๊ฒฝ์ด ์•„๋‹˜)

 

2) PATCH

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

- age๋งŒ 50์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ!!

- PATCH ์ง€์› ์•ˆํ•˜๋Š” ๊ฒฝ์šฐ -> POST ์“ฐ๋ฉด๋จ!

 

3) DELETE

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

- members 100๋ฒˆ ์ง€์šฐ๊ฒ ๋‹ค -> ๋ฆฌ์†Œ์Šค ์ œ๊ฑฐ

 


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

1) ์•ˆ์ „ (Safe Methods)

- ํ˜ธ์ถœํ•ด๋„ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Œ

- ๊ทธ๋ž˜๋„ ๊ณ„์† ํ˜ธ์ถœํ•ด์„œ ๋กœ๊ทธ ์Œ“์—ฌ์„œ ์žฅ์•  ๋ฐœ์ƒ ? -> ์•ˆ์ „์€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋งŒ ๊ณ ๋ ค

 

2) ๋ฉฑ๋“ฑ (Idempotent Methods)

- f(f(x)) = f(x)

- ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•˜๋“ , 100๋ฒˆ ํ˜ธ์ถœํ•˜๋“  ๊ฒฐ๊ณผ๊ฐ€ ๋˜‘๊ฐ™๋‹ค

- ๋ฉฑ๋“ฑ ๋ฉ”์„œ๋“œ

GET        : ํ•œ ๋ฒˆ ์กฐํšŒํ•˜๋“ , ๋‘ ๋ฒˆ ์กฐํšŒํ•˜๋“  ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์กฐํšŒ๋จ

PUT        : ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์ฒด, ๋”ฐ๋ผ์„œ ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋„ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๊ฐ™์Œ
DELETE  : ๊ฒฐ๊ณผ๋ฅผ ์‚ญ์ œ, ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋„ ์‚ญ์ œ๋œ ๊ฒฐ๊ณผ๋Š” ๊ฐ™์Œ
POST     : ๋ฉฑ๋“ฑ์ด ์•„๋‹ˆ๋‹ค! ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด ๊ฐ™์€ ๊ฒฐ์ œ ์ค‘๋ณต ๋ฐœ์ƒ ๊ฐ€๋Šฅ

 

- ํ™œ์šฉ

> ์ž๋™ ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜

> ์„œ๋ฒ„๊ฐ€ TIMEOUT ๋“ฑ์œผ๋กœ ์ •์ƒ ์‘๋‹ต ๋ชป์ค„๋•Œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ™์€ ์š”์ฒญ์„ ๋‹ค์‹œ ํ•ด๋„ ๋˜๋Š”๊ฐ€? ํŒ๋‹จ ๊ทผ๊ฑฐ

 

Q : ์žฌ์š”์ฒญ ์ค‘๊ฐ„์— ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•ด๋ฒ„๋ฆฌ๋ฉด?  (GET / PUT / GET)

A : ๋ฉฑ๋“ฑ์€ ์™ธ๋ถ€ ์š”์ธ์œผ๋กœ ์ค‘๊ฐ„์— ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ๊นŒ์ง€๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š์Œ

 

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

- ์‘๋‹ต ๊ฒฐ๊ณผ ๋ฆฌ์†Œ์Šค๋ฅผ ์บ์‹œํ•ด์„œ ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”๊ฐ€?

- GET / HEAD / POST / PATCH ์บ์‹œ ๊ฐ€๋Šฅ

- ์‹ค์ œ๋กœ GET / HEAD ์ •๋„๋งŒ ์บ์‹œ๋กœ ์‚ฌ์šฉ

- POST / PATCH ์บ์‹œ ํ‚ค๋กœ ๊ณ ๋ คํ•ด์•ผํ•˜๋Š”๋ฐ ๊ตฌํ˜„ ์–ด๋ ค์›€

  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ๋„ค์ด๋ฒ„ ๋ฐด๋“œ์— ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜ค์Šคํ† ๋ฆฌ ๊ณต์œ ํ•˜๊ธฐ