๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“‹Technical interview(Front)

Get๊ณผ Post์˜ ์ฐจ์ด

by ๋…น์ฐจ๋ง›๊ฐœ๊ตฌ๋ฆฌ 2022. 12. 16.

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://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80

https://velog.io/@songyouhyun/Get%EA%B3%BC-Post%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%A5%BC-%EC%95%84%EC%8B%9C%EB%82%98%EC%9A%94

https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/

https://velog.io/@songyouhyun/Get๊ณผ-Post์˜-์ฐจ์ด๋ฅผ-์•„์‹œ๋‚˜์š”

728x90