Skip to content

Latest commit

ย 

History

History
71 lines (48 loc) ยท 5.19 KB

Get_and_Post.md

File metadata and controls

71 lines (48 loc) ยท 5.19 KB

๋„คํŠธ์›Œํฌ ์ „์†ก GET, POST๋ฐฉ์‹

written by sohyeon, hyemin ๐Ÿ’ก


1. HTTP ํ”„๋กœํ† ์ฝœ (HyperText Transfer Protocol)

์ธํ„ฐ๋„ท ์ƒ์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์š”์ฒญ/์‘๋‹ต์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

ํด๋ผ์ด์–ธํŠธ(์›น ๋ธŒ๋ผ์šฐ์ €)๊ฐ€ ์„œ๋ฒ„(์›น ์„œ๋ฒ„)๋กœ ํŠน์ • ์›น ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜๋ฉด ์›น ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ HTMLํ˜•์‹์œผ๋กœ ์‘๋‹ตํ•œ๋‹ค.

์ด ๋•Œ, HTTP ์š”์ฒญ์— ํฌํ•จ๋˜๋Š” HTTP ๋ฉ”์†Œ๋“œ๋Š” ์š”์ฒญ์˜ ์ข…๋ฅ˜๋ฅผ ์„œ๋ฒ„์—๊ฒŒ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. HTTP ๋ฉ”์†Œ๋“œ๋Š” GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE ๋“ฑ์ด ์žˆ๋‹ค.


2. GET

GET์€ HTTP/1.1 ์ŠคํŽ™์ธ RFC2616์˜ Section9.3์— ๋”ฐ๋ฅด๋ฉด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ๋ฉ”์†Œ๋“œ๋‹ค.

GET์˜ ํŠน์ง•

  • GET์€ ์š”์ฒญ์„ ์ „์†กํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ Body์— ๋‹ด์ง€ ์•Š๊ณ , ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ํ†ตํ•ด ์ „์†กํ•œ๋‹ค.

    • ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์€ URL์˜ ๋์— ?์™€ ํ•จ๊ป˜ ์ด๋ฆ„๊ณผ ๊ฐ’์œผ๋กœ ์Œ์„ ์ด๋ฃจ๋Š” ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋งํ•˜๋Š”๋ฐ, ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ด๋ฉด &๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.
  • www.example-url.com/resources?name1=val1&name2=val2

    • ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ํฌํ•จํ•œ URL๋กœ, ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…์€ name1, name2์ด๊ณ , ๊ฐ๊ฐ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” val1, val2๋ผ๋Š” ๊ฐ’์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
    • ๋˜ํ•œ, ์œ„์™€ ๊ฐ™์ด GET์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์–ด ๋ณด์•ˆ์— ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, URL์˜ ๊ธธ์ด๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์–ด ๋งŽ์€ ์–‘์˜ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์—†๋‹ค.
  • GET์€ ๋ถˆํ•„์š”ํ•œ ์š”์ฒญ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด ์š”์ฒญ์ด ์บ์‹œ๋  ์ˆ˜ ์žˆ๋‹ค.

    • js, css, ์ด๋ฏธ์ง€์™€ ๊ฐ™์€ ์ •์  ์ปจํ…์ธ ๋Š” ๋ฐ์ดํ„ฐ์–‘์ด ํฌ๊ณ , ๋ณ€๊ฒฝ๋  ์ผ์ด ์ ์–ด์„œ ๋ฐ˜๋ณตํ•ด์„œ ๋™์ผํ•œ ์š”์ฒญ์„ ๋ณด๋‚ผ ํ•„์š”๊ฐ€ ์—†๋‹ค.
    • ๋”ฐ๋ผ์„œ, ์ •์  ์ปจํ…์ธ ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋‚˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์š”์ฒญ์„ ์บ์‹œํ•ด๋‘๊ณ , ๋™์ผํ•œ ์š”์ฒญ์ด ๋ฐœ์ƒํ•  ๋•Œ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ์•Š๊ณ  ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๋งŒ์•ฝ ์ •์  ์ปจํ…์ธ ๋ฅผ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ, ๋‚ด์šฉ์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์บ์‹œ๋ฅผ ์ง€์›Œ์คŒ์œผ๋กœ์จ ์ด๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

3. POST

POST๋Š” GET๊ณผ ๋‹ฌ๋ฆฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑ/๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์†กํ•ด์•ผ ๋  ๋ฐ์ดํ„ฐ๋ฅผ HTTP ๋ฉ”์„ธ์ง€์˜ Body์— ๋‹ด์•„์„œ ์ „์†กํ•œ๋‹ค.

POST์˜ ํŠน์ง•

  • POST๋Š” ์ „์†กํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๋ฅผ HTTP ๋ฉ”์„ธ์ง€์˜ Body์— ๋‹ด์•„์„œ ์ „์†กํ•œ๋‹ค.

    • ๋ฐ์ดํ„ฐ๊ฐ€ Body๋กœ ์ „์†ก๋˜๊ณ  ๋‚ด์šฉ์ด ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š์•„ GET๋ณด๋‹ค ๋ณด์•ˆ์ ์ธ ๋ฉด์—์„œ ์•ˆ์ „ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, POST ์š”์ฒญ๋„ ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ, Fiddler์™€ ๊ฐ™์€ ํˆด๋กœ ์š”์ฒญ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ, ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ์—๋Š” ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค.
  • POST๋Š” URL์— ๋ฐ์ดํ„ฐ๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฆ๊ฒจ์ฐพ๊ธฐ๋‚˜ ์บ์‹ฑ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

  • HTTP ๋ฉ”์„ธ์ง€์˜ Body๋Š” ๊ธธ์ด์˜ ์ œํ•œ์—†์ด ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

  • POST๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋Š” ์š”์ฒญ ํ—ค๋”์˜ Content-Type์— ์š”์ฒญ ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ํ‘œ์‹œํ•ด์•ผ ํ•œ๋‹ค.

    • ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ํ‘œ์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„๋Š” ๋‚ด์šฉ์ด๋‚˜ URL์— ํฌํ•จ๋œ ๋ฆฌ์†Œ์Šค์˜ ํ™•์žฅ์ž๋ช… ๋“ฑ์œผ๋กœ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์œ ์ถ”ํ•œ๋‹ค.
    • ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” application/octet-stream๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

4. GET๊ณผ POST์˜ ์ฐจ์ด

  • GET์€ Idempotent(๋ฉฑ๋“ฑ)ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋Š”๋ฐ ์ด๋Š” ์„œ๋ฒ„์—๊ฒŒ ๋™์ผํ•œ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ „์†กํ•˜๋”๋ผ๋„ ๋™์ผํ•œ ์‘๋‹ต์ด ๋Œ์•„์™€์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

    • ์„ค๊ณ„์›์น™์— ๋”ฐ๋ผ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋‚˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ค์ง€ ์•Š์•„์•ผ ๋™์ผํ•œ ์‘๋‹ต์ด ๋Œ์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๋กœ ์กฐํšŒ๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›นํŽ˜์ด์ง€๋ฅผ ์—ด์–ด๋ณด๊ฑฐ๋‚˜ ๊ฒŒ์‹œ๊ธ€์„ ์ฝ๋Š” ๋“ฑ ์กฐํšŒ๋ฅผ ํ•˜๋Š” ํ–‰์œ„๋Š” GET์œผ๋กœ ์š”์ฒญํ•œ๋‹ค.
  • POST๋Š” Non-idempotentํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์—๊ฒŒ ๋™์ผํ•œ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ „์†กํ•ด๋„ ์‘๋‹ต์€ ํ•ญ์ƒ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

    • ์„œ๋ฒ„์˜ ์ƒํƒœ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒŒ์‹œ๊ธ€์„ ์“ฐ๋ฉด ์„œ๋ฒ„์— ๊ฒŒ์‹œ๊ธ€์ด ์ €์žฅ์ด ๋˜๊ณ , ๊ฒŒ์‹œ๊ธ€์„ ์‚ญ์ œํ•˜๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด์ง€๋Š” ๋“ฑ POST๋กœ ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์„œ๋ฒ„์˜ ๋ฌด์–ธ๊ฐ€๋Š” ๋ณ€๊ฒฝ๋˜๋„๋ก ์‚ฌ์šฉํ•œ๋‹ค.
    • ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ƒ์„ฑ์—๋Š” POST, ์ˆ˜์ •์€ PUT ๋˜๋Š” PATCH, ์‚ญ์ œ๋Š” DELETE๊ฐ€ ๋” ์šฉ๋„์— ๋งž๋Š” ๋ฉ”์†Œ๋“œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์›นํŽ˜์ด์ง€๋ฅผ ์กฐํšŒํ•  ๋•Œ, ๋งํฌ๋ฅผ ํ†ตํ•ด ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ํ•ด๋‹น ๋งํฌ์™€ ๊ด€๋ จ๋œ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•œ๋ฐ

    • POST๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๊ฐ€ Body์— ๋‹ด๊ฒจ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งํฌ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์ง€๋งŒ,
    • GET์€ URL์— ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งํฌ๋ฅผ ๊ฑธ ๋•Œ, URL์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ๋” ์ž์„ธํ•˜๊ฒŒ ํŽ˜์ด์ง€๋ฅผ ๋งํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก ์ด์ฒ˜๋Ÿผ GET๊ณผ POST๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ค๊ณ„์›์น™์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ๊ฒƒ!


Reference & Additional Resources