GET vs POST
Get은 가져온다는 개념이고, Post는 수행한다는 개념으로 받아들이면 쉽다.
Get
- GET method는 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메서드
- 서버에서 어떤 데이터를 가져와서 보여줄 때 사용
- 값이나 내용, 상태 등이 바뀌지 않는 경우에 사용
- GET은 요청을 전송할 때 URL 주소 끝에 파라미터로 포함하여 전송(쿼리 스트링)
- 요청이 여러개면 &로 연결
- 데이터를 전송할 때 길이 제한이 있음
- 불필요한 요청을 제한하기 위해 캐시 될 수 있음
- 브라우저에 기록이 남음
- 요청 성공시 200 응답코드
- idempotent 함
- CRUD 중 R에 해당
Post
- POST method는 리소스를 생성/업데이트하기 위해 서버에 데이터를 보내는데 사용
- 전송해야 될 데이터를 HTTP 메세지의 Body에 담아서 전송
- Body의 타입은 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시함에 따라 결정
- 데이터를 전송할 때 길이 제한이 없음
- 이처럼 눈에 보이지 않게 전송되어 안전하다고 생각할 수 있으나 개발자도구 같은 툴로 요청내용을 확인 할 수 있어 꼭 암호화 전송해야 함
- 요청은 캐시되지 않음
- 브라우저 기록에 남지않음
- 북마크에 추가할 수 없음
- 자원생성은 201(Created) 코드반환
- idempotent 하지 않음
- CRUD 중 CUD 가능
idempotent란
idempotent는 멱등법칙(冪等法則) 또는 멱등성(冪等性)이란 뜻으로, 수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
정리하자면 Get요청은 서버에 여러번 요청해도 동일한 응답이 돌아와야 하며
Post는 여러번 요청해도 항상 다를 수 있다.
그림 요약


POST는 상태 변경이 가능 하다고 하나
생성 - POST
수정 - PUT, PATCH
삭제 - DELETE
처럼 용도에 맞는 메소드 사용하는 것을 권장한다.
출저 : 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/