๐Ÿ“š CS [ComputerScience]/๐Ÿ“˜ ์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ [ComputerNetwork]

[Network] GET vs POST Method

Dbswnstjd 2022. 5. 2. 21:40

client๊ฐ€ ์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ GET๊ณผ POST, ์ด ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ด์ค€๋‹ค๋Š” ๊ณตํ†ต์ ์ด ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์žฅ๋‹จ์ ๋„ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ™ฉ์— ๋งž๋Š” ์ ์ ˆํ•œ method๋ฅผ ์„ ํƒํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

GET method๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก

Get ๋ฉ”์†Œ๋“œ๋Š” client์˜ ๋ฐ์ดํ„ฐ๋ฅผ URL ๋’ค์— ๋ถ™์—ฌ์„œ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด๋•Œ ๋ฐ์ดํ„ฐ๋Š” key์™€ value์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ HTTPํŒจํ‚ท์˜ ํ—ค๋”์— ํฌํ•จ๋˜์–ด ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

GET/RegisterStudent.asp?user=value1&pass=value2

์œ„์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด๋‚ด์ง€๊ฒŒ ๋˜๋Š”๋ฐ, URL๋’ค์˜ "?"๋ฅผ ํ†ตํ•ด URL์˜ ๋๊ณผ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์˜ ์‹œ์ž‘์ ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ key๋Š” “user”์™€ “pass”์ด๋ฉฐ ๊ฐ๊ฐ value1, value2์™€ ์Œ์œผ๋กœ ํ‘œํ˜„๋˜์–ด ์žˆ๋Š”๊ฒƒ์„ ๋ณด์‹ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ URL์— ๋ถ™์ด๊ธฐ ๋•Œ๋ฌธ์— Body๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋นˆ์ƒํƒœ๋กœ ๋ณด๋‚ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ—ค๋” ๋‚ด์šฉ์— Body๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๋Š” Content-Type ํ—ค๋” ํ•„๋“œ ๋˜ํ•œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ƒ๋žต๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

URLํ˜•ํƒœ๋กœ ํ‘œํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ํŒจํ‚ค์ง€๋ฅผ ๋‹ค๋ฅธ์‚ฌ๋žŒ ์—๊ฒŒ ์ ‘์†ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด URL์— ๋ฐ์ดํ„ฐ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค๋Š” ํŠน์ง• ๋•Œ๋ฌธ์— ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ client์ธก์—์„œ ์ „๋ถ€ ๋ณผ ์ˆ˜ ์žˆ๊ณ , ์ด๋Š” ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋„๋ก ์„ค๊ณ„๋˜์–ด, ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ์–‘์— ํ•œ๊ณ„๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์ด ๊ฐ„ํŽธํ•˜๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

POST method๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก

POST ๋ฉ”์†Œ๋“œ๋Š” GET๊ณผ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ URL์— ๋ถ™์—ฌ์„œ ๋ณด๋‚ด์ง€ ์•Š๊ณ  BODY์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์„œ ๋ณด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

POST/RegisterStudent.asp HTTP/1.1
Host: www.headf1rst.github.io user=value1&pass=value2

๋”ฐ๋ผ์„œ ํ—ค๋”ํ•„๋“œ์ค‘ BODY์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” Content-Type์ด๋ผ๋Š” ํ—ค๋”ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜๋ฉฐ ์–ด๋–ค ์ปจํ…์ธ  ํƒ€์ž…์ธ์ง€ ๋ช…์‹œํ•ด ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ Content-Type์ค‘ ๋Œ€ํ‘œ์ ์ธ ์„ธ๊ฐ€์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. application/x-www-form-urlencoded

๊ตฌ๋ถ„์ž &๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ GET๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ BODY์— key, value ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค. ((์ปจํ…์ธ ๋ฅผ ๋ช…์‹œํ•ด ์ฃผ์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋””ํดํŠธ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.)

2. text/plain

BODY์— ๋‹จ์ˆœ txt๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค

3. multipart/form-data

BODY์˜ ๋ฐ์ดํ„ฐ๋ฅผ binary ๋ฐ์ดํ„ฐ๋กœ ๋„ฃ๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ฃผ๋กœ ํŒŒ์ผ์ „์†ก์— ๋งŽ์ด ์“ฐ์ด๋Š” ํƒ€์ž… ์ž…๋‹ˆ๋‹ค.

GET vs POST

  • GET ๋ฉ”์†Œ๋“œ์—์„œ client๋Š” URL์„ ํ†ตํ•ด value๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด POST์—์„œ๋Š” value๊ฐ€ URL์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • GET์€ value์˜ ๊ธธ์ด์— ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ((์ฃผ๋กœ 255๊ฐœ์˜ ๋ฌธ์ž) ๋ฐ˜๋ฉด POST๋Š” value๊ฐ€ HTTP์˜ BODY์— ํฌํ•จ์–ด ์ „์†ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธธ์ด์— ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • GET์€ ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ ํƒ€์ž…๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด POST๋Š” ๋ฌธ์ž์—ด, ๋ฐ”์ด๋„ˆ๋ฆฌ, ์ˆซ์ž๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • GET ๋ฐฉ์‹์˜ ์š”์ฒญ์€ ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ POST ๋ณด๋‹ค ๋น ๋ฆ…๋‹ˆ๋‹ค

์ฐธ๊ณ ์ž๋ฃŒ