Get / Post... 처음 배울 때부터 궁금했던 내용이다. 

무언가 서버로 보낸다는 건 똑같은데 왜 둘을 구분해서 써야하는가에 대한 의문으로 시작하게 되는 글이다.

먼저, 둘의 공통점은 클라이언트에서 서버로 데이터를 전송하는 역할이라는 것이다.

그리고 내가 아는 차이점

1. Get은 주소값 ? 뒤에 페이지에서 넣은 값이 붙고 Post는 ?가 안 붙는다.
2. 1의 이유로 Get은 주소가 너무 길어져서 많은 양의 정보를 담지 못한다. Post는 보다 많은 정보를 
    담을 수 있다.


현재 하고 있는 푸드트럭 프로젝트에서 게시판 리스트를 가져온다면 Get, 글을 작성해서 등록하는 것은 Post 이런 식으로 쓰고 있는데 궁금해서 글을 작성하는 것도 Get으로 바꿔봤더니 문제없이 잘 작동하더라.

그래서 찾아봤다.


찾아본 결과 내가 내린 결론은

Get은 서버에 영향을 안 주는 행위, POST는 서버에 영향을 주는 행위 구분이 가능하다!

먼저 Get을 사용했던 부분을 보면 글 리스트 보기, 리스트에서 원하는 글 눌러서 보기처럼 서버에서 데이터를 요청하여 받아오는 경우에 쓴다.

반면에 Post는 글 등록, 회원가입 등 서버에 내가 입력한 값을 넣고 그 값을 DB에서 처리,저장하여 무언가 행동을 하게 될 때 사용하게 된다.

둘을 구분하기 어려우면 이 행위가 DB에 저장되는가 아닌가로 판단해도 될 것 같다. DB에 저장이 안 된다면 Get, DB에 저장이 된다면 Post로 생각하자.



보다 더 깊게 들어가 실용적 측면에서 둘을 비교해보자면 Get 요청은 몇 번을 수행하더라도 동일한 값(게시판 글보기)이 돌아와야 하는 곳에 쓰고 Post 요청은 수행되었을 때 서버에서 무언가 바뀔수도 있기 때문에 항상 동일한 결과를 얻을 수 없다는 것을 알아야 한다. 만약 글 보기에 Get이 아닌 Post를 썼다면 크롤링을 하는 검색봇이 내 페이지에 들어왔을 때 Post처리로 인해 내가 가진 DB에 데이터가 바뀔 수 있다. 반대로 글 작성에 Get을 사용한다면 내가 쓴 글이 주소값에 남아 캐쉬가 되어 똑같은 글을 또 작성하는 일이 발생할 수 있다.

둘의 비교를 w3schools에서 해놓을 게 있으니 참고하면 좋을듯 싶다.





ref.
https://blog.outsider.ne.kr/312 
https://www.letmecompile.com/get-post-%EB%B0%A9%EC%8B%9D-%EC%B0%A8%EC%9D%B4%EC%A0%90/ 

https://www.w3schools.com/tags/ref_httpmethods.asp 


+ Recent posts