written by sohyeon, hyemin ๐ก
์ธํฐ๋ท ์์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์์ฒญ/์๋ต์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํ๋กํ ์ฝ์ด๋ค.
ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ )
๊ฐ ์๋ฒ(์น ์๋ฒ)
๋ก ํน์ ์น ํ์ด์ง
๋ฅผ ์์ฒญํ๋ฉด ์น ์๋ฒ๊ฐ ํด๋น ํ์ด์ง์ ๋ด์ฉ์ HTML
ํ์์ผ๋ก ์๋ตํ๋ค.
์ด ๋, HTTP ์์ฒญ์ ํฌํจ๋๋ HTTP ๋ฉ์๋๋ ์์ฒญ์ ์ข ๋ฅ๋ฅผ ์๋ฒ์๊ฒ ์๋ ค์ฃผ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. HTTP ๋ฉ์๋๋ GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE ๋ฑ์ด ์๋ค.
GET์ HTTP/1.1 ์คํ์ธ RFC2616์ Section9.3์ ๋ฐ๋ฅด๋ฉด ์๋ฒ๋ก๋ถํฐ ์ ๋ณด๋ฅผ ์กฐํํ๊ธฐ ์ํด ์ค๊ณ๋ ๋ฉ์๋
๋ค.
-
GET์
์์ฒญ์ ์ ์กํ ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ Body์ ๋ด์ง ์๊ณ
,์ฟผ๋ฆฌ์คํธ๋ง
์ ํตํด ์ ์กํ๋ค.- ์ฟผ๋ฆฌ์คํธ๋ง์ URL์ ๋์
?
์ ํจ๊ป ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ก ์์ ์ด๋ฃจ๋ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๋งํ๋๋ฐ, ์์ฒญ ํ๋ผ๋ฏธํฐ๊ฐ ์ฌ๋ฌ ๊ฐ์ด๋ฉด&
๋ก ์ฐ๊ฒฐํ๋ค.
- ์ฟผ๋ฆฌ์คํธ๋ง์ URL์ ๋์
-
www.example-url.com/resources?name1=val1&name2=val2
- ์ฟผ๋ฆฌ์คํธ๋ง์ ํฌํจํ URL๋ก, ์์ฒญ ํ๋ผ๋ฏธํฐ๋ช ์ name1, name2์ด๊ณ , ๊ฐ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ val1, val2๋ผ๋ ๊ฐ์ผ๋ก ์๋ฒ์ ์์ฒญ์ ๋ณด๋ธ๋ค.
- ๋ํ, ์์ ๊ฐ์ด GET์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋์ด ๋ณด์์ ์ทจ์ฝ
ํ ์ ์์ผ๋ฉฐ,URL์ ๊ธธ์ด๊ฐ ์ ํด์ ธ ์์ด
๋ง์ ์์ ์ ๋ณด๋ฅผ ์ ๋ฌํ ์ ์๋ค.
-
GET์
๋ถํ์ํ ์์ฒญ์ ์ ํํ๊ธฐ ์ํด ์์ฒญ์ด ์บ์
๋ ์ ์๋ค.- js, css, ์ด๋ฏธ์ง์ ๊ฐ์ ์ ์ ์ปจํ ์ธ ๋ ๋ฐ์ดํฐ์์ด ํฌ๊ณ , ๋ณ๊ฒฝ๋ ์ผ์ด ์ ์ด์ ๋ฐ๋ณตํด์ ๋์ผํ ์์ฒญ์ ๋ณด๋ผ ํ์๊ฐ ์๋ค.
- ๋ฐ๋ผ์, ์ ์ ์ปจํ ์ธ ๋ฅผ ์์ฒญํ๊ณ ๋๋ฉด ๋ธ๋ผ์ฐ์ ์์๋ ์์ฒญ์ ์บ์ํด๋๊ณ , ๋์ผํ ์์ฒญ์ด ๋ฐ์ํ ๋ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ด์ง ์๊ณ ์บ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ง์ฝ ์ ์ ์ปจํ ์ธ ๋ฅผ ๋ณ๊ฒฝํ์ ๋, ๋ด์ฉ์ด ๋ฐ๋์ง ์๋ ๊ฒฝ์ฐ์๋ ๋ธ๋ผ์ฐ์ ์ ์บ์๋ฅผ ์ง์์ค์ผ๋ก์จ ์ด๋ฅผ ํด๊ฒฐํ๋ค.
POST๋ GET๊ณผ ๋ฌ๋ฆฌ ๋ฆฌ์์ค๋ฅผ ์์ฑ/๋ณ๊ฒฝํ๊ธฐ ์ํด ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์ ์ ์กํด์ผ ๋ ๋ฐ์ดํฐ๋ฅผ HTTP ๋ฉ์ธ์ง์ Body์ ๋ด์์ ์ ์ก
ํ๋ค.
-
POST๋ ์ ์กํด์ผ ํ ๋ฐ์ดํฐ๋ฅผ HTTP ๋ฉ์ธ์ง์ Body์ ๋ด์์ ์ ์กํ๋ค.
- ๋ฐ์ดํฐ๊ฐ Body๋ก ์ ์ก๋๊ณ ๋ด์ฉ์ด ๋์ ๋ณด์ด์ง ์์ GET๋ณด๋ค ๋ณด์์ ์ธ ๋ฉด์์ ์์ ํ๋ค๊ณ ์๊ฐํ ์ ์์ง๋ง,
POST ์์ฒญ๋ ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ, Fiddler์ ๊ฐ์ ํด๋ก ์์ฒญ ๋ด์ฉ์ ํ์ธํ ์ ์๋ค.
- ๋ฐ๋ผ์, ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ์๋
์ํธํํ์ฌ ์ ์ก
ํด์ผ ํ๋ค.
- ๋ฐ์ดํฐ๊ฐ Body๋ก ์ ์ก๋๊ณ ๋ด์ฉ์ด ๋์ ๋ณด์ด์ง ์์ GET๋ณด๋ค ๋ณด์์ ์ธ ๋ฉด์์ ์์ ํ๋ค๊ณ ์๊ฐํ ์ ์์ง๋ง,
-
POST๋
URL์ ๋ฐ์ดํฐ๋ฅผ ๋ ธ์ถํ์ง ์์ผ๋ฏ๋ก ์ฆ๊ฒจ์ฐพ๊ธฐ๋ ์บ์ฑ์ด ๋ถ๊ฐ๋ฅ
ํ๋ค. -
HTTP ๋ฉ์ธ์ง์
Body๋ ๊ธธ์ด์ ์ ํ์์ด
๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค. -
POST๋ก ์์ฒญ์ ๋ณด๋ผ ๋๋
์์ฒญ ํค๋์ Content-Type์ ์์ฒญ ๋ฐ์ดํฐ์ ํ์ ์ ํ์
ํด์ผ ํ๋ค.- ๋ฐ์ดํฐ ํ์ ์ ํ์ํ์ง ์์ผ๋ฉด ์๋ฒ๋ ๋ด์ฉ์ด๋ URL์ ํฌํจ๋ ๋ฆฌ์์ค์ ํ์ฅ์๋ช ๋ฑ์ผ๋ก ๋ฐ์ดํฐ ํ์ ์ ์ ์ถํ๋ค.
- ์ ์ ์๋ ๊ฒฝ์ฐ์๋ application/octet-stream๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
-
GET
์ Idempotent(๋ฉฑ๋ฑ)ํ๋๋ก ์ค๊ณ๋์๋๋ฐ ์ด๋์๋ฒ์๊ฒ ๋์ผํ ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ์ ์กํ๋๋ผ๋ ๋์ผํ ์๋ต์ด ๋์์์ผ ํ๋ค๋ ๊ฒ
์ ์๋ฏธํ๋ค.- ์ค๊ณ์์น์ ๋ฐ๋ผ ์๋ฒ์ ๋ฐ์ดํฐ๋ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํค์ง ์์์ผ ๋์ผํ ์๋ต์ด ๋์์ค๊ธฐ ๋๋ฌธ์ ์ฃผ๋ก
์กฐํ๋ฅผ ํ ๋ ์ฌ์ฉ
ํ๋ค. - ์๋ฅผ ๋ค์ด, ๋ธ๋ผ์ฐ์ ์์ ์นํ์ด์ง๋ฅผ ์ด์ด๋ณด๊ฑฐ๋ ๊ฒ์๊ธ์ ์ฝ๋ ๋ฑ ์กฐํ๋ฅผ ํ๋ ํ์๋ GET์ผ๋ก ์์ฒญํ๋ค.
- ์ค๊ณ์์น์ ๋ฐ๋ผ ์๋ฒ์ ๋ฐ์ดํฐ๋ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํค์ง ์์์ผ ๋์ผํ ์๋ต์ด ๋์์ค๊ธฐ ๋๋ฌธ์ ์ฃผ๋ก
-
POST
๋ Non-idempotentํ๊ธฐ ๋๋ฌธ์์๋ฒ์๊ฒ ๋์ผํ ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ์ ์กํด๋ ์๋ต์ ํญ์ ๋ค๋ฅผ ์ ์๋ค.
- ์๋ฒ์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ์ํฌ ๋ ์ฌ์ฉํ๋ค.
- ์๋ฅผ ๋ค์ด, ๊ฒ์๊ธ์ ์ฐ๋ฉด ์๋ฒ์ ๊ฒ์๊ธ์ด ์ ์ฅ์ด ๋๊ณ , ๊ฒ์๊ธ์ ์ญ์ ํ๋ฉด ํด๋น ๋ฐ์ดํฐ๊ฐ ์์ด์ง๋ ๋ฑ POST๋ก ์์ฒญ์ ํ๊ฒ ๋๋ฉด ์๋ฒ์ ๋ฌด์ธ๊ฐ๋ ๋ณ๊ฒฝ๋๋๋ก ์ฌ์ฉํ๋ค.
- ์์ฑ, ์์ , ์ญ์ ์ ์ฌ์ฉํ ์ ์์ง๋ง,
์์ฑ์๋ POST, ์์ ์ PUT ๋๋ PATCH, ์ญ์ ๋ DELETE๊ฐ ๋ ์ฉ๋์ ๋ง๋ ๋ฉ์๋
๋ผ๊ณ ํ ์ ์๋ค.
-
์นํ์ด์ง๋ฅผ ์กฐํํ ๋, ๋งํฌ๋ฅผ ํตํด ํน์ ํ์ด์ง๋ก ์ด๋ํ๋ ค๋ฉด ํด๋น ๋งํฌ์ ๊ด๋ จ๋ ์ ๋ณด๊ฐ ํ์ํ๋ฐ
POST
๋์์ฒญ ๋ฐ์ดํฐ๊ฐ Body์ ๋ด๊ฒจ ์๊ธฐ ๋๋ฌธ์
๋งํฌ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ง๋ง,GET
์URL์ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์
๋งํฌ๋ฅผ ๊ฑธ ๋, URL์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํด ๋ ์์ธํ๊ฒ ํ์ด์ง๋ฅผ ๋งํฌํ ์ ์๋ค.
๐ก ์ด์ฒ๋ผ GET๊ณผ POST๋ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ค๊ณ์์น์ ๋ฐ๋ผ ์ ์ ํ ์ฉ๋๋ก ์ฌ์ฉํ ๊ฒ!