HTTP GET POST 방식 차이 - vvonha/NaverAPI GitHub Wiki

GET / POST 방식의 차이

GET은 Idempotent, POST는 Non-idempotent하게 설계되었다.


멱등성(冪等性, idempotent)

수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질

GET 방식이 Idempotent하도록 설계되었다는 것은 GET 방식으로 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다는 것을 의미한다. 이것이 GET 방식을 조회하는 부분을 작성할 때 사용하는 이유이다.

POST 방식은 GET 방식과는 다르게 Non-idempotent한 구조이기 때문에, 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있다. 이것이 서버의 상태나 데이터를 변경할 때 사용되는 이유이다.


추가 내용

즉, 멱등성이라는 것은 동일한 연산을 여러 번 수행하더라도 동일한 결과가 나타나야 합니다.
여기서 GET이 Idempotent하도록 설계되었다는 것은 GET으로 서버에게 동일한 요청을 여러 번 전송하더라도 
동일한 응답이 돌아와야 한다는 것을 의미합니다. 이에 따라 GET은 설계 원칙에 따라 서버의 데이터나 상태를 
변경 시키지 않아야 Idempotent하기 때문에 주로 조회를 할 때에 사용해야 합니다. 

예를 들어, 브라우저에서 웹페이지를 열어보거나 게시글을 읽는 등 조회를 하는 행위는 GET 방식으로 요청하게 됩니다.

반대로 POST는 Non-idempotent하기 때문에 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있습니다. 
이에 따라 POST는 서버의 상태나 데이터를 변경시킬 때 사용됩니다. 게시글을 쓰면 서버에 게시글이 저장이 되고, 
게시글을 삭제하면 해당 데이터가 없어지는 등 POST로 요청을 하게 되면 서버의 무언가는 변경되도록 사용됩니다. 

이처럼 POST는 생성, 수정, 삭제에 사용할 수 있지만, 생성에는 POST, 수정은 PUT 또는 PATCH, 삭제는 DELETE가 
더 용도에 맞는 method 라고 할 수 있습니다.

GET과 POST는 이처럼 큰 차이가 있기 때문에 설계 원칙에 따라 적절한 용도로 사용해야 합니다.