[CS] GET, POST의 차이점

이준기·2022년 7월 28일
0

GET 이란 ?


클라이언트에서 서버로 리소스를 요청하기 위해 사용되는 메서드 입니다.

전송해야할 데이터를 쿼리 스트링을 URL 끝 부분에 넣어 전송합니다.

특징

  1. 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있습니다.
  2. 파라미터에 내용이 노출되기 때문에 민감한 데이터를 다룰때는 GET 요청을 사용해서는 안됩니다.
  3. 브라우저 기록에 남습니다.
  4. 북마크에 추가할 수 있습니다.
  5. 성공시, 200 return
  6. 데이터 길이에 대한 제한이 있습니다.
  7. idempotent 합니다.

POST 이란 ?


리소스를 생성/업데이트 하기 위해 서버에 데이터를 보내는데 사용되는 메서드 입니다.

전송해야할 데이터를 HTTP 메세지의 Body에 담아서 전송합니다.

특징

  1. 캐시되지 않습니다.
  2. 브라우저 기록에 안남습니다.
  3. 데이터 길이에 대한 제한이 없습니다.
  4. 리소스 생성 성공시, 201 return
  5. idempotent 하지 않습니다.

idempotent ?


멱등성이라고 하는데, 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질을 의미합니다.

  • GET은 같은 요청에 대해 같은 결과를 매번 던져주고,

  • PUT은 동일한 데이터를 계속 덮어쓰기하는 결과이기 때문에 멱등합니다.

  • DELETE의 경우 코드에 따라 에러를 출력할 수도 있겠지만, 데이터의 관점에서 봤을 때 삭제되었다는 사실이 변하지는 않습니다.

  • 반면, POST는 같은 요청이더라도 던져주는 결과가 매번 다를 수 있습니다.

  • 추가로, 데이터를 일부만 수정하는 PATCH의 경우도 멱등성이 보장되지 않을 수 있습니다. (운이 좋으면 결과가 동일할 수도 있음)

Reference


https://github.com/JaeYeopHan/Interview_Question_for_Beginner

https://velog.io/@bae12/HTTP-%EB%A9%94%EC%86%8C%EB%93%9C%EC%9D%98-%EB%A9%B1%EB%93%B1Idempotent%EB%9E%80

profile
Hongik CE

0개의 댓글