yeon's blog

[HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹] HTTP ๋ฉ”์„œ๋“œ - HTTP ๋ฉ”์„œ๋“œ์˜ ์†์„ฑ ๋ณธ๋ฌธ

HTTP

[HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹] HTTP ๋ฉ”์„œ๋“œ - HTTP ๋ฉ”์„œ๋“œ์˜ ์†์„ฑ

yeonii 2023. 12. 3. 15:31

๐ŸŒฑ HTTP Method์˜ ์†์„ฑ

1. ์•ˆ์ „(Safe Methods)

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

  • GET์€ ๋‹จ์ˆœํžˆ ์กฐํšŒ๋งŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜๋‹ค. ํ•œ๋ฒˆ ํ˜ธ์ถœํ•ด๋„ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•ด๋„ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์•„์„œ ์•ˆ์ „ํ•˜๋‹ค.
  • POST, PUT, PATCH, DELETE๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค.
  • ๋งŒ์•ฝ์— ๊ทธ๋ž˜๋„ ๊ณ„์† ํ˜ธ์ถœํ•ด์„œ ์„œ๋ฒ„์—์„œ ๋กœ๊ทธ๊ฐ€ ๊ณ„์† ์Œ“๊ฒŒ๋˜์„œ ์„œ๋ฒ„ ์žฅ์• ๊ฐ€ ์ผ์–ด๋‚  ๋•Œ
  • → ์•ˆ์ „์€ ๊ทธ๋Ÿฐ ๋ถ€๋ถ„๊นŒ์ง€ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค. ์•ˆ์ „์€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋งŒ ๊ณ ๋ คํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

2-1. ๋ฉฑ๋“ฑ(Idempotent Methods)

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋„ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜๋‹ค.

  • GET์€ ํ•œ ๋ฒˆ ์กฐํšŒํ•˜๋“  ๋‘ ๋ฒˆ ์กฐํšŒํ•˜๋“  ๊ฐ™์€ ๊ฒฐ๊ณผ๋กœ ์กฐํšŒ๋œ๋‹ค.
  • PUT์€ ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ•ด๋„ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜๋‹ค.
  • DELETE๋Š” ๊ฒฐ๊ณผ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ•ด๋„ ์‚ญ์ œ๋œ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜๋‹ค.
  • PUT์€ ๋ฉฑ๋“ฑ์ด ์•„๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด ๊ฐ™์€ ๊ฒฐ์ œ๊ฐ€ ์ค‘๋ณตํ•ด์„œ ๋ฐœ์ƒํ•ด์„œ ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๋กœ ๊ตฌ๋ณ„์ด ๋œ๋‹ค.
์‚ฌ์šฉ์ž 1 : GET โžก๏ธ usernae: A, age: 20

 

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

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์ผํ•œ ์š”์ฒญ์„ ๋˜‘๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์ผํ•œ ์š”์ฒญํ–ˆ์„ ๋•Œ๋งŒ ๋ฉฑ๋“ฑํ•œ๋‹ค.

์ฆ‰, ๋ฉฑ๋“ฑ์€ ๋™์‹œ์„ฑ ๋ฌธ์ œ๊นŒ์ง€ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

2-2. ๋ฉฑ๋“ฑ์˜ ํ™œ์šฉ

์ž๋™ ๋ณต๊ตฌ ๋งค์ปค๋‹ˆ์ฆ˜๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž๋™ DELETE๋ฅผ ํ˜ธ์ถœํ–ˆ๋Š”๋ฐ ์„œ๋ฒ„์—์„œ ์ž˜ ๋˜๊ณ  ์žˆ๋Š”์ง€ ์•ˆ ๋˜๊ณ  ์žˆ๋Š”์ง€ ์‘๋‹ต์ด ์—†๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค์‹œ ์ž๋™ DELETE๋ฅผ ์žฌ์‹œ๋„ ํ•ด๋„ ๋ฉฑ๋“ฑํ•œ๋‹ค. ์‹ค๋ฌด์—์„œ ์ด๋Ÿฐ ์ „๋ฐ˜์ ์œผ๋กœ ์ž๋™ ๋ณต๊ตฌ ๋งค์ปค๋‹ˆ์ฆ˜์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

Q: ์žฌ์š”์ฒญ ์ค‘๊ฐ„์— ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•ด๋ฒ„๋ฆฌ๋ฉด?
     - ์‚ฌ์šฉ์ž1: GET -> username: A, age: 20
     - ์‚ฌ์šฉ์ž1: GET -> username: A, age: 20
     - ์‚ฌ์šฉ์ž1: GET -> username: A, age: 20
A: ๋ฉฑ๋“ฑ์€ ์™ธ๋ถ€ ์š”์ธ์œผ๋กœ ์ค‘๊ฐ„์— ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ ๊นŒ์ง€๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค!

 

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

์›น ๋ธŒ๋ผ์šฐ์ €์— ์šฉ๋Ÿ‰์ด ํฐ ์ด๋ฏธ์ง€๋ฅผ ํ•œ๋ฒˆ ์š”์ฒญ์„ ํ•˜๋ฉด ๊ทธ ๋‹ค์Œ์— ๋˜‘๊ฐ™์ด ์šฉ๋Ÿ‰์ด ํฐ ์ด๋ฏธ์ง€๋ฅผ ์š”์ฒญํ•  ํ•„์š”์—†๋‹ค. ๋˜‘๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ์„œ๋ฒ„์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์œผ๋ฉด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. ๊ทธ๋ž˜์„œ ๋กœ์ปฌ PC์— ์›น ๋ธŒ๋ผ์šฐ์ € ์ €์žฅ์„ ํ•˜๊ณ  ์žˆ์„ ๋•Œ ์บ์‹œ๋ผ๊ณ  ํ•œ๋‹ค.

์บ์‹œ๋Š” GET, HEAD, POST, PATCH ๊ฐ€๋Šฅ ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” GET, HEAD ์ •๋„๋งŒ ์บ์‹œ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. POST, PATCH๋Š” ์บ์‹œ๋ฅผ ํ•˜๋ ค๋ฉด ๋ณธ๋ฌธ ๋‚ด์šฉ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ž‘ ์บ์‹œ ํ‚ค๊ฐ€ ๋งž์•„์•„์•ผ ๋˜๋Š”๋ฐ ๋ณต์žกํ•ด์„œ ๊ตฌํ˜„์ด ์‰ฝ์ง€ ์•Š๋‹ค. GET, HEAD๋Š” URI๋งŒ ์บ์‹œ ํ‚ค๋กœ ์บ์‹œํ•ด์„œ ๊ฐ„๋‹จํ•˜๋‹ค.