๊ฐœ๋ฐœ ์ง€์‹/HTTP ์ง€์‹

๐ŸŒ HTTP ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜ & ์š”์ฒญ ํ๋ฆ„ ๐Ÿ’ฏ ์ด์ •๋ฆฌ

์ธํŒŒ_ 2022. 12. 13. 08:14

http-method-rest

HTTP Method ์ข…๋ฅ˜

HTTP ๋ฉ”์„œ๋“œ๋ž€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์— ์ด๋ฃจ์–ด์ง€๋Š” ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response) ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์„ ์ผ์ปซ๋Š”๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์„œ๋ฒ„์— ์ฃผ์–ด์ง„ ๋ฆฌ์†Œ์Šค์— ์ˆ˜ํ–‰ํ•˜๊ธธ ์›ํ•˜๋Š” ํ–‰๋™, ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋™์ž‘์„ ์ง€์ •ํ•˜๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

HTTP ๋ฉ”์†Œ๋“œ์˜ ์ข…๋ฅ˜๋Š” ์ด 9๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ด ์ค‘ ์ฃผ๋กœ ์“ฐ์ด๋Š” ๋ฉ”์†Œ๋“œ๋Š” 5๊ฐ€์ง€๋กœ ๋ณด๋ฉด ๋œ๋‹ค.

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

HTTP ๋ฉ”์„œ๋“œ - GET

  • ๋ฆฌ์†Œ์Šค ์กฐํšŒ ๋ฉ”์„œ๋“œ (Read)
  • ๋งŒ์ผ ํ‹€์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ๋Š” ์ฟผ๋ฆฌ์ŠคํŠธ๋ง๋ฅผ ํ†ตํ•ด์„œ ์ „๋‹ฌ
    • GET /members/100?username=inpa&height=200
  • ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ์™ธ์— ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์„œ๋ฒ„์—์„œ ๋”ฐ๋กœ ๊ตฌ์„ฑํ•ด์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ณณ์ด ๋งŽ์•„์„œ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ
  • ์กฐํšŒํ•  ๋•Œ POST๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, GET ๋ฉ”์„œ๋“œ๋Š” ์บ์‹ฑ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์— GET์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค.

์ •์  ๋ฐ์ดํ„ฐ ์กฐํšŒ ๊ณผ์ •

  • ์ด๋ฏธ์ง€, ์ •์  ํ…์ŠคํŠธ ๋ฌธ์„œ GET
  • ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ ์—†์ด ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ์กฐํšŒ ๊ฐ€๋Šฅ

 

1. ํด๋ผ์ด์–ธํŠธ์—์„œ /members/100 ์œผ๋กœ 100๋ฒˆ ๋ฉค๋ฒ„๋ฅผ ์กฐํšŒํ•ด์„œ ์ •๋ณด๋ฅผ ๋‹ฌ๋ผ๊ณ  GET ์š”์ฒญ

http-method-get

 

2. ์„œ๋ฒ„์—์„œ๋Š” ์š”์ฒญ ๋ฉ”์„ธ์ง€๋ฅผ ๋ถ„์„ํ•ด ๋‚ด๋ถ€์˜ ์œ ์ €์ •๋ณด๋ฅผ ์กฐํšŒํ•œ ๋’ค ๊ฒฐ๊ณผ Response๋ฅผ ๋งŒ๋“ ๋‹ค.

http-method-get

 

3. ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ดํŠธ๋กœ ์‘๋‹ต์„ ํ•ด์ค€๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ ์ •์ƒ์ ์œผ๋กœ ๋ฐ›์œผ๋ฉด 200 OK status๋ฅผ ๊ฐ€์ง€๋ฉฐ, ํšŒ์›์ •๋ณด๋ฅผ ์–ป๊ฒŒ ๋œ๋‹ค.

  • ์˜ˆ์‹œ์—์„œ๋Š” JSON ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” HTML์ผ์ˆ˜๋„ ์žˆ๊ณ  ์ด๋ฏธ์ง€ ๊ฐ™์€ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํŒŒ์ผ์ผ ์ˆ˜๋„ ์žˆ๊ณ  ๋‹ค์–‘ํ•˜๋‹ค.

http-method-get


๋™์  ๋ฐ์ดํ„ฐ ์กฐํšŒ ๊ณผ์ •

  • ์ฃผ๋กœ ๊ฒ€์ƒ‰, ๊ฒŒ์‹œํŒ ๋ชฉ๋ก์—์„œ ๊ฒ€์ƒ‰์–ด๋กœ ์ด์šฉ
  • ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ
  • ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” key1=value1&key2=value2 ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์Œ

 

1. ์š”์ฒญ URL ๋’ค์— ?q=hello&hl=ko ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ค˜์„œ ์ƒ์„ธํ•œ ์กฐํšŒ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๋Š”๋‹ค

http-method-get


HTML Form ๋ฐ์ดํ„ฐ ์กฐํšŒ ๊ณผ์ •

  • HTML Form ํƒœ๊ทธ ๋ฌธ์„œ๋กœ ์‚ฌ์šฉ์ž์™€ UI๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ํ†ต์‹ 
  • HTML Form ์ „์†ก์€ GET, POST๋งŒ ์ง€์›

 

1. ์›น๋ฌธ์„œ์—์„œ ํผ ์ž…๋ ฅ์นธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ ๊ณ  ์ „์†ก ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

http-method-get

 

2. ์ง€์ •ํ•œ GET ๋ฉ”์„œ๋“œ ๋™์ž‘์— ๋”ฐ๋ผ input ํƒœ๊ทธ์•ˆ์— ๋“ค์–ด๊ฐ„ ๊ฐ’๋“ค์ด ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์œผ๋กœ ์„œ๋ฒ„๋กœ ์ „์†ก๋œ๋‹ค

http-method-get


HTTP ๋ฉ”์„œ๋“œ - POST

  • ์ „๋‹ฌํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ/์ƒ์„ฑ ์š”์ฒญ ๋ฉ”์„œ๋“œ (Create)
  • ๋ฉ”์‹œ์ง€ ๋ฐ”๋””(body)๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ์—…๋ฐ์ดํŠธ
  • ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋กœ ์ฃผ๋กœ ์‹ ๊ทœ ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก, ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ
  • ๋งŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ GET ํ•˜๋Š”๋ฐ ์žˆ์–ด, JSON์œผ๋กœ ์กฐํšŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์•ผ ํ•˜๋Š” ์• ๋งคํ•œ ๊ฒฝ์šฐ POST๋ฅผ ์‚ฌ์šฉ

JSON ๋ฐ์ดํ„ฐ ์ „์†ก ๊ณผ์ •

 

1. ํด๋ผ์ด์–ธํŠธ๋Š” body์— ๋“ฑ๋กํ•  ํšŒ์› ์ •๋ณด๋ฅผ JSON ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด ๋‹ด๊ณ  ์„œ๋ฒ„๋กœ ์ „์†กํ•œ๋‹ค.

http-method-post

 

2. ์„œ๋ฒ„์—์„œ๋Š” ๋ฐ›์€ ๋ฉ”์„ธ์ง€๋ฅผ ๋ถ„์„ํ•ด ๋กœ์ง ๋Œ€๋กœ ์ฒ˜๋ฆฌ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ฑ๋กํ•˜๊ณ  ์‹ ๊ทœ ์•„์ด๋””๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

http-method-post

 

3. ์‹ ๊ทœํšŒ์›์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋””์— ๋‹ด์•„์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์‘๋‹ตํ•œ๋‹ค.

  • ์‹ ๊ทœ ์ž์› ์ƒ์„ฑ์€ 200์ด๋‚˜ 201๋กœ ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.
  • Location์€ ์ž์›์ด ์‹ ๊ทœ๋กœ ์ƒ์„ฑ๋œ URI ๊ฒฝ๋กœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

http-method-post


HTML Form ๋ฐ์ดํ„ฐ ์ „์†ก ๊ณผ์ •

  • HTML Form ํƒœ๊ทธ ๋ฌธ์„œ๋กœ ์‚ฌ์šฉ์ž์™€ UI๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ํ†ต์‹ 
  • ํšŒ์› ๊ฐ€์ž…, ์ƒํ’ˆ ์ฃผ๋ฌธ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์— ์ด์šฉ
  • HTML Form ์ „์†ก์€ GET, POST๋งŒ ์ง€์›

 

1. ์›น๋ฌธ์„œ์—์„œ ํผ ์ž…๋ ฅ์นธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ ๊ณ  ์ „์†ก ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

http-method-post

 

2. ์ง€์ •ํ•œ POST ๋ฉ”์„œ๋“œ ๋™์ž‘์— ๋”ฐ๋ผ input ํƒœ๊ทธ์•ˆ์— ๋“ค์–ด๊ฐ„ ๊ฐ’๋“ค์ด ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์œผ๋กœ ์„œ๋ฒ„๋กœ ์ „์†ก๋œ๋‹ค

http-method-post

[ Content-Type ํ—ค๋” ์ข…๋ฅ˜ ]

Content-Type: application/x-www-form-urlencoded
- Form์˜ ๋‚ด์šฉ์„ HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ํ†ตํ•ด์„œ ์ „์†ก(key=value, ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜•์‹)
- ์ „์†ก ๋ฐ์ดํ„ฐ๋ฅผ url encoding ์ฒ˜๋ฆฌ
- ์˜ˆ) abc๊น€ → abc%EA%B9%80

Content-Type: multipart/form-data
- ํŒŒ์ผ ์—…๋กœ๋“œ ๊ฐ™์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ ์‚ฌ์šฉ
- ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์—ฌ๋Ÿฌ ํŒŒ์ผ๊ณผ Form์˜ ๋‚ด์šฉ ํ•จ๊ป˜ ์ „์†ก ๊ฐ€๋Šฅ. ๊ทธ๋ž˜์„œ ์ด๋ฆ„์ด multipart ์ด๋‹ค.

Content-Type: application/json
- TEXT, XML, JSON ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ ์‚ฌ์šฉ

ํŒŒ์ผ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ณผ์ •

  • enctype์„ multipart/form-data ๋กœ ์ž‘์„ฑํ•ด ํ•ด๋‹น ํผ์— ํŒŒ์ผ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ‘œ์‹œํ•œ๋‹ค.
  • ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ์ „์†ก์‹œ ์‚ฌ์šฉํ•œ๋‹ค.
  • multipart/form-data ํ˜•์‹์ด๋ผ๋ฉด HTTP ๋ฉ”์„ธ์ง€์— ์ž„์˜์˜ ๊ตฌ๋ถ„์ž(------XXX) ๊ฐ€ Form ๋ฐ์ดํ„ฐ๊ฐ„ ๊ตฌ๋ถ„์„ ์ง€์–ด์ค€๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ Content-Type์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

http-method-post


HTTP ๋ฉ”์„œ๋“œ - PUT

  • ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒด(์ˆ˜์ •)ํ•˜๋Š” ๋ฉ”์„œ๋“œ (Update)
  • ๋งŒ์ผ ์š”์ฒญ ๋ฉ”์„ธ์ง€์— ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ๋ฎ์–ด์“ฐ๊ณ , ์—†์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•œ๋‹ค.
    • /members/100 ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉด ๊ธฐ์กด์— ๊ฒƒ์„ ์™„์ „ ๋Œ€์ฒด ํ•œ๋‹ค.
    • /members/100 ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ๋Œ€์ฒด ํ• ๊ฒŒ ์—†์œผ๋‹ˆ๊นŒ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ฒดํ•ด์•ผ ํ•˜๋‹ˆ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค์˜ ๊ตฌ์ฒด์ ์ธ ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด ๋ณด๋‚ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
    • POST /members : ๋ฉค๋ฒ„ ์ƒˆ๋กœ ์ถ”๊ฐ€
    • PUT /members/100 : 100๋ฒˆ์งธ ๋ฉค๋ฒ„ ์ˆ˜์ •

PUT ์š”์ฒญ์— ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ

 

1. 100๋ฒˆ ์œ ์ €์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ต์ฒดํ•˜๊ฒ ๋‹ค๋Š” ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

http-method-put

 

 

2. ๊ธฐ์กด์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด ์™„์ „ํžˆ ๋Œ€์ฒด๋œ๋‹ค.

http-method-put


PUT ์š”์ฒญ์— ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ

 

1. 100๋ฒˆ ์œ ์ €์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ต์ฒดํ•˜๊ฒ ๋‹ค๋Š” ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

http-method-put

 

2. ๊ธฐ์กด์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด POST ์™€ ๊ฐ™์ด ์‹ ๊ทœ๋กœ ์ƒ์„ฑํ•œ๋‹ค.

http-method-put


PUT ์š”์ฒญ์— ์ผ๋ถ€ ๋ฆฌ์†Œ์Šค๋งŒ ๋ณ€๊ฒฝํ•˜๊ธธ ์›ํ• ๊ฒฝ์šฐ

 

1. age๋งŒ 50์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ PUT์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค.

http-method-put

 

2. ํ•˜์ง€๋งŒ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ ์™„์ „ํžˆ ๋Œ€์ฒด๋˜์–ด ์ด๋ฆ„ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋œ๋‹ค. (์ด๋•Œ๋Š” PATCH ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค)

http-method-put


HTTP ๋ฉ”์„œ๋“œ - PATCH

  • ๋ฆฌ์†Œ์Šค ์ผ๋ถ€ ๋ถ€๋ถ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์†Œ๋“œ (Update)
  • ๋งŒ์ผ PATCH๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์„œ๋ฒ„์—์„œ๋Š” ๋Œ€์‹ ์— POST๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1. age๋งŒ 50์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ PATCH๋กœ ์ „๋‹ฌํ•œ๋‹ค.

http-method-patch

 

 

2. PUT๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ํšŒ์› ์ •๋ณด์—์„œ age๋งŒ ๋ณ€๊ฒฝ๋œ๋‹ค.

http-method-patch


HTTP ๋ฉ”์„œ๋“œ - DELETE

  • ๋ฆฌ์†Œ์Šค ์ œ๊ฑฐํ•˜๋Š” ๋ฉ”์†Œ๋“œ (Delete)
  • ์ƒํƒœ์ฝ”๋“œ๋Š” ๋Œ€๋ถ€๋ถ„ 200์„ ์‚ฌ์šฉํ•˜๊ณ  ์ƒํ™ฉ์— ๋”ฐ๋ผ 204๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

1. 100๋ฒˆ์งธ ๋ฉค๋ฒ„๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด DELETE๋กœ ์ „๋‹ฌํ•œ๋‹ค.

http-method-delete

 

2. ์„œ๋ฒ„์—์„œ ์š”์ฒญ์„ ๋ฐ›๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ฑฐ ํ•œ๋‹ค.

http-method-delete


HTTP ๋ฉ”์„œ๋“œ - HEAD

  • GET๊ณผ ๋™์ผํ•˜์ง€๋งŒ ์„œ๋ฒ„์—์„œ Body๋ฅผ Return ํ•˜์ง€ ์•Š์Œ
  • ์‘๋‹ต์˜ ์ƒํƒœ ์ฝ”๋“œ๋งŒ ํ™•์ธํ• ๋•Œ์™€ ๊ฐ™์ด Resource๋ฅผ ๋ฐ›์ง€ ์•Š๊ณ  ์˜ค์ง ์ฐพ๊ธฐ๋งŒ ์›ํ• ๋•Œ ์‚ฌ์šฉ (์ผ์ข…์˜ ๊ฒ€์‚ฌ ์šฉ๋„)
  • ์„œ๋ฒ„์˜ ์‘๋‹ต ํ—ค๋”๋ฅผ ๋ด„์œผ๋กœ์จ Resource๊ฐ€ ์ˆ˜์ • ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ

http-method-head


HTTP ๋ฉ”์„œ๋“œ - TRACE

  • ์ด ๋ฉ”์„œ๋“œ๋„ ์ผ์ข…์˜ ๊ฒ€์‚ฌ์šฉ
  • ์„œ๋ฒ„์— ๋„๋‹ฌ ํ–ˆ์„ ๋•Œ์˜ ์ตœ์ข… ํŒจํ‚ท์˜ ์š”์ฒญ ํŒจํ‚ท ๋‚ด์šฉ์„ ์‘๋‹ต ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์š”์ฒญ์˜ ์ตœ์ข… ์ˆ˜์‹ ์ž๋Š” ๋ฐ˜๋“œ์‹œ ์†ก์‹ ์ž์—๊ฒŒ 200(OK) ์‘๋‹ต์˜ ๋‚ด์šฉ(Body)๋กœ ์ˆ˜์‹ ํ•œ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ˜์†กํ•ด์•ผ ํ•œ๋‹ค.
  • ์ตœ์ดˆ Client์˜ ์š”์ฒญ์—๋Š” Body๊ฐ€ ํฌํ•จ๋ ์ˆ˜ ์—†๋‹ค.
ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ํŒจํ‚ท์ด ๋ฐฉํ™”๋ฒฝ, Proxy ์„œ๋ฒ„, Gateway ๋“ฑ์„ ๊ฑฐ์น˜๋ฉด์„œ ํŒจํ‚ท์˜ ๋ณ€์กฐ๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ๋ž˜์„œ TRACE ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์š”์ฒญํ–ˆ๋˜ ํŒจํ‚ท ๋‚ด์šฉ๊ณผ ์‘๋‹ต ๋ฐ›์€ ์š”์ฒญ ํŒจํ‚ท ๋‚ด์šฉ์„ ๋น„๊ตํ•˜์—ฌ ๋ณ€์กฐ ์œ ๋ฌด๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค

http-method-trace


HTTP ๋ฉ”์„œ๋“œ - OPTION

  • ์˜ˆ๋น„ ์š”์ฒญ(Preflight)์— ์‚ฌ์šฉ๋˜๋Š” HTTP ๋ฉ”์†Œ๋“œ
  • ์˜ˆ๋น„ ์š”์ฒญ์ด๋ž€ ๋ณธ ์š”์ฒญ์„ ํ•˜๊ธฐ ์ „์— ์•ˆ์ „ํ•œ์ง€ ๋ฏธ๋ฆฌ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค
  • ์„œ๋ฒ„์˜ ์ง€์› ๊ฐ€๋Šฅํ•œ HTTP ๋ฉ”์„œ๋“œ์™€ ์ถœ์ฒ˜๋ฅผ ์‘๋‹ต ๋ฐ›์•„ CORS ์ •์ฑ…์„ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•œ ์š”์ฒญ์ด๋‹ค.

http-method-option


์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์‹ค์ „ HTTP ๋ฉ”์„œ๋“œ ์š”์ฒญํ•˜๊ธฐ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ fetch ๋ฉ”์„œ๋“œ๋กœ HTTP ๋ฉ”์„œ๋“œ ์š”์ฒญ์„ ๋ณด๋‚ด๋ณด๋Š” ์‹ค์ „ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ†ตํ•ด ์ตํ˜€๋ณด์ž.

fetch("https://jsonplaceholder.typicode.com/posts/1", {
  method: "DELETE",
})
  .then((response) => response.json())
  .then((data) => console.log(data))
 

๐ŸŒ Fetch API ์œผ๋กœ AJAX ์š”์ฒญํ•˜๊ธฐ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ AJAX ์š”์ฒญ ๋ฐฉ์‹ ์ •ํ†ต์ ์œผ๋กœ XMLHttpRequest() ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์š”์ฒญํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ๋ฌธ๋ฒ•์ด ๋‚œํ•ดํ•˜๊ณ  ๊ฐ€๋…์„ฑ๋„ ์ข‹์ง€ ์•Š๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฒˆ์‹œ๊ฐ„์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ AJAX ํ†ต์‹ ์˜ ์ตœ์‹  ๊ธฐ์ˆ 

inpa.tistory.com


# ์ฐธ๊ณ ์ž๋ฃŒ

๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ๊น€์˜ํ•œ

https://medium.com/@lyhlg0201/http-method-d561b77df7