GET
GET method๋ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์ด๋ ํ ์ ๋ณด๋ฅผ ์์ฒญํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฉ์๋์ ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋, ๊ฒ์ํ ๋์ ์ฌ์ฉ๋๋ method๋ผ๊ณ ํ ์ ์๋ค.
GET์ ์์ฒญ์ ์ ์กํ ๋ URL ์ฃผ์ ๋์ ํ๋ผ๋ฏธํฐ๋ก ํฌํจ๋์ด ์ ์ก๋๋ฉฐ, ์ด ๋ถ๋ถ์ ์ฟผ๋ฆฌ ์คํธ๋ง(QueryString)์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
GET ๋ฐฉ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋ ์ด ์์ฒญํ๋ ๋ฐ์ดํฐ๊ฐ HTTP Request Message์ Header ๋ถ๋ถ์ url์ ๋ด๊ฒจ์ ์ ์ก๋๋ค. ๊ทธ๋์ ์์ฒญ์ url ์์ ? ๋ค์ ๋ฐ์ดํฐ๊ฐ ๋ถ์ด์ request๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด๋ค.
์์ฒญ ํ๋ผ๋ฏธํฐ๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ &๋ก ์ฐ๊ฒฐํ๋ค.
https://localhost:3000/category?postId=3&page=3
๊ทธ๋ฆฌ๊ณ GET ์์ฒญ์ ์ค๋ก์ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋๋ง ์ฌ์ฉ๋๊ณ ์์ ํ ๋๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด๋ฐ ์ด์ ๋ก ์ฌ์ฉํ๋ฉด ์์ ํ๋ค๊ณ ๊ฐ์ฃผ๋๊ณ , ๋ฐ์ดํฐ์ ๋ณํ์ ์ํ์์ด ์ฌ์ฉํ ์ ์๋ค๋ ๋ป์ ๋๋ค.
GET ์์ฒญ ํน์ง
- GET์ ๋ถํ์ํ ์์ฒญ์ ์ ํํ๊ธฐ ์ํด ์์ฒญ์ด ์บ์๋ ์ ์์ต๋๋ค.
- ํ๋ผ๋ฏธํฐ์ ๋ด์ฉ์ด ๋ ธ์ถ๋๊ธฐ ๋๋ฌธ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ GET ์์ฒญ์ ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค.
- GET ์์ฒญ์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ก์ ๋จ์ต๋๋ค.
- GET ์์ฒญ์ ๋ถ๋งํฌ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- GET ์์ฒญ์๋ ๋ฐ์ดํฐ ๊ธธ์ด์ ๋ํ ์ ํ์ด ์์ต๋๋ค.
- Get ์์ฒญ์ ์ฑ๊ณต์, 200(Ok) HTTP ์๋ต ์ฝ๋๋ฅผ XML, JSON๋ฟ๋ง ์๋๋ผ ์ฌ๋ฌ ๋ฐ์ดํฐ(html, txt๋ฑ..), ์ฌ๋ฌ ํ์์ ๋ฐ์ดํฐ์ ํจ๊ป ๋ฐํํฉ๋๋ค.
- GET ์์ฒญ์ idempotentํ๋ค.
POST
POST method๋ ๋ฆฌ์์ค๋ฅผ ์์ฑ/์ ๋ฐ์ดํธ ํ๊ธฐ ์ํด ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
GET๊ณผ ๋ฌ๋ฆฌ ์ ์กํด์ผํ ๋ฐ์ดํฐ๋ฅผ HTTP ๋ฉ์ธ์ง์ Request Body์ ๋ด์์ ์ ์กํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ Body์ ํ์ ์ ์์ฒญ ํค๋์ Content-Type์ ์์ฒญ ๋ฐ์ดํฐ์ ํ์ ํ์์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค.
HTTP ๋ฉ์ธ์ง์ Body์ ๊ธธ์ด ์ ํ์์ด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค.
๊ทธ๋์ POST ์์ฒญ์ GET๊ณผ ๋ฌ๋ฆฌ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ ์ด์ ๋ ์ด ๋๋ฌธ์ด๋ค.
์ด์ฒ๋ผ POST๋ ๋ฐ์ดํฐ๊ฐ Body๋ก ์ ์ก๋๊ณ , ๋ด์ฉ์ด ๋์ ๋ณด์ด์ง ์์ GET ๋ณด๋ค ๋ณด์์ ์ธ ๋ฉด์์ ์์ ํ๋ค๊ณ ์๊ฐํ ์ ์์ง๋ง, POST ์์ฒญ๋ ๋ถ๋ช ๋ณด์์ ํ์ ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ์ํธํํด ์ ์กํด์ผ ํ๋ค.
Post ์์ฒญ์ ๋ํ ๊ธฐํ ์ฐธ๊ณ ์ฌํญ
- POST ์์ฒญ์ ์บ์๋์ง ์์ต๋๋ค.
- POST ์์ฒญ์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ก์ ๋จ์ ์์ง ์์ต๋๋ค.
- POST ์์ฒญ์ ๋ถ๋งํฌ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- POST ์์ฒญ์๋ ๋ฐ์ดํฐ ๊ธธ์ด์ ๋ํ ์ ํ์ด ์์ต๋๋ค.
- Post ์์ฒญ ์ค ์์ ์์ฑ์ 201(Created) HTTP ์๋ต ์ฝ๋๋ฅผ ๋ฐํํฉ๋๋ค.
- Post ์์ฒญ์ idempotentํ์ง ์์ต๋๋ค.
GET๊ณผ POST์ ์ฐจ์ด
GET์ Idempotent, POST๋ Non-idempotentํ๊ฒ ์ค๊ณ๋์๋ค.
Idempotent(๋ฉฑ๋ฑ)๋ ์๋์ ๊ฐ์ด ํด์ํ์ฌ ์ดํดํ ์ ์๋ค.
์ํ์ด๋ ์ ์ฐํ์์ ์ฐ์ฐ์ ํ ์ฑ์ง์ ๋ํ๋ด๋ ๊ฒ์ผ๋ก, ์ฐ์ฐ์ ์ฌ๋ฌ ๋ฒ ์ ์ฉํ๋๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง์ง ์๋ ์ฑ์ง
์ฆ, Idempotent(๋ฉฑ๋ฑ)์ด๋ ๋์ผํ ์ฐ์ฐ์ ์ฌ๋ฌ ๋ฒ ์ํํ๋๋ผ๋ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
์์์ ๋งํ๋ฏ GET์ด Idempotentํ๋๋ก ์ค๊ณ๋์๋ค.
GET์ผ๋ก ์๋ฒ์๊ฒ ๋์ผํ ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ์ ์กํ๋๋ผ๋ ๋์ผํ ์๋ต์ด ๋์์์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ.
์ด์ ๋ฐ๋ผ GET์ ์ค๊ณ์์น์ ๋ฐ๋ผ ์๋ฒ์ ๋ฐ์ดํฐ๋ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํค์ง ์์์ผ Idempotentํ๊ธฐ ๋๋ฌธ์ ์ฃผ๋ก ์กฐํ๋ฅผ ํ ๋์ ์ฌ์ฉํด์ผํ๋ ๊ฒ์ด๋ค.
POST๋ Non-idempotentํ๊ธฐ ๋๋ฌธ์
์๋ฒ์๊ฒ ๋์ผํ ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ์ ์กํด๋ ์๋ต์ ํญ์ ๋ค๋ฅผ ์ ์๋ค.
์ด์ ๋ฐ๋ผ POST๋ ์๋ฒ์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ์ํฌ ๋ ์ฌ์ฉ๋๋ฉฐ. ๊ฒ์๊ธ์ ์ฐ๋ฉด ์๋ฒ์ ๊ฒ์๊ธ์ด ์ ์ฅ์ด ๋๊ณ , ๊ฒ์๊ธ์ ์ญ์ ํ๋ฉด ํด๋น ๋ฐ์ดํฐ๊ฐ ์์ด์ง๋ ๋ฑ POST๋ก ์์ฒญ์ ํ๊ฒ ๋๋ฉด ์๋ฒ์ ๋ฌด์ธ๊ฐ๋ ๋ณ๊ฒฝ๋๋๋ก ์ฌ์ฉ๋๋ค.
์ด์ฒ๋ผ POST๋ ์์ฑ, ์์ , ์ญ์ ์ ์ฌ์ฉํ ์ ์์ง๋ง, ์์ฑ์๋ POST, ์์ ์ PUT ๋๋ PATCH, ์ญ์ ๋ DELETE๊ฐ ๋ ์ฉ๋์ ๋ง๋ ๋ฉ์๋๋ผ๊ณ ํ ์ ์๋ค.
GET๊ณผ POST๋ ์ด์ฒ๋ผ ํฐ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ค๊ณ์์น์ ๋ฐ๋ผ ์ ์ ํ ์ฉ๋๋ก ์ฌ์ฉํด์ผํ๋ค.
๐์ฐธ๊ณ
https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/
https://velog.io/@songyouhyun/Get๊ณผ-Post์-์ฐจ์ด๋ฅผ-์์๋์
'๐Technical interview(Front)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTML์ด ๋ ๋๋ง ์ค์ JavaScript๊ฐ ์คํ๋๋ฉด ๋ ๋๋ง์ด ๋ฉ์ถ๋ ์ด์ (0) | 2023.01.09 |
---|---|
[JS]์ด๋ฒคํธ ๋ฒ๋ธ๋ง๊ณผ ์บก์ฒ๋ง(Bubbling & Capturing) (0) | 2022.11.27 |
๋ธ๋ผ์ฐ์ ์ ์ฅ์ ์ฐจ์ด์ ( Localstorage, SessionStorage, Cookie ) (0) | 2022.11.16 |
Promise (0) | 2022.11.16 |
[JavaScript] ์ค์ฝํ ์ฒด์ธ์ด๋? (0) | 2022.11.09 |