ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] GET/POST 두 방식의 특징과 차이점 알아보기
    Back-End/Spring Legacy 2022. 8. 23. 10:07

     

    서버 API를 구현하다보면 GET/POST 방식을 볼 수 있는데 주로 @RequestMapping(value = "/basic",  method= {RequestMethod.GET, RequestMethod.POST}) 이런 방식으로 RequestMapping이나 아예 각자 하나씩만 다루는 @GetMapping, @PostMapping 어노테이션을 사용하는 컨트롤러에서 만날 수 있다. 

     

    그럼 의문이 들지 않는가 어떨때 Get을 사용하고 어떨때 Post를 사용하는지! 오늘은 두 방식의 특징과 차이점을 알아보려고 한다. 

     

     

     

     

    전달 방식

     

    GET/POST는 HTTP 프로토콜을 이용해서 서버에 정보를 전달할 때 사용하는 방식이다. 둘의 차이점은 어디에 위치해있는가인데 POST 용청 시 URL 파라미터가 보이지 않는 이유는 데이터가 요청 바디에 포함되어있기 때문이다. 그렇기 때문에 GET과 POST에 따라 데이터를 URL에 추가해야할지 요청 바디에 추가해야할지를 알고있어야 한다. 

     

     

     

    GET/POST 차이점

     

     

     

    1. Select 기능을 원한다면 GET 메서드, Create/Update/Delete 기능을 원한다면 POST 메서드를 사용한다.

     

    : GET 요청은 실패 시 요청이 성공할 때까지 반복하여 요청한다. 그렇기 때문에 인터넷 비연결 시 웹페이지를 로드하면 웹 페이지가 뜨지 않다가 인터넷이 연결되었을 때 웹페이지가 새로 고침 되면서 화면에 나타나는 경우가 바로 GET의 특성이다. 

     

    그러나 POST 방식같은 경우 GET과 같이 실패 시 반복적으로 요청한다면 데이터 변형이 중복으로 적용될 수 있다. 이렇게 되면 오류랑 직결되는데, 따라서 POST는 설계 상 실패 시 반복 요청하지 않게 설계되어있다. 

     

    따라서 GET방식에는 Select , POST 방식에는 Create/Update/Delete 을 사용하는 것이다. 

    + 사용자의 입력이 필요한 페이지는 GET 방식!! 예를들어) 게시판에서 게시글을 등록하거나 수정하기 위해 어떤 버튼을 누른다! 그랬을 때 이동하는 첫 페이지는 GET 방식이고 게시물 등록 페이지에서 submit같은 버튼을 클릭했을 때 전달되는 방식이 POST이다. 

     

    2. 검색 결과 등 고정적인 주소 및 링크 주소로 사용될 수 있다면 GET 메서드를 사용한다.

    3. 정보를 담을 URL(최대 2048자)는 한계가 있기 때문에 이를 해결하고 싶다면 POST 메서드 사용

    4. POST 메서드는 정보를 숨길 수 있는데, SSL(Secure Sockets Layer)를 사용 안 한다면 GET과 마찬가지이다.

    5. GET은 캐시가 남아있어 전송속도가 빠르고 POST는 캐시가 남지 않아 보안적인 면에서 유리하다.

    6. GET은 브라우저 히스토리에 파라미터가 남고 POST는 저장되지 않는다.

     

    즉) 이말은 아래와 같이 파라미터가 노출되는 걸 확인할 수 있다. 

     

     

    위의 차이점들을 정리해보자면

    GET은 캐시가 남아있어 보안적인 측면에서 좋지 않으나, 전송 속도가 우수하고 파라미터가 url에 노출된다.

    POST는 캐시가 남지 않아 보안적인 면에서 좋고 요청 시 Request Body에 데이터가 들어가기 때문에 파라미터가 url에 노출되지 않는다. 

     

     

     

     

     

     

    반응형

    댓글

Designed by Tistory.