-
[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에 노출되지 않는다.
반응형'Back-End > Spring Legacy' 카테고리의 다른 글
[3-ch11 Spring view] 게시판 목록, 등록 jsp 화면 처리하기, jQuery 통해 Modal 창 띄우기 (0) 2022.08.24 [3-ch10 스프링] 프레젠테이션(웹) 계층의 CRUD 구현 (0) 2022.08.23 [3-ch9 비즈니스 계층] Service의 생성과 설정 (0) 2022.08.19 [3-ch8 스프링] 영속/비지니스 계층의 CRUD 구현, Mapper 인터페이스와 xml (0) 2022.08.19 [3-ch7 스프링 MVC] 프로젝트 기본 구성, DB 더미 테이블 생성 (0) 2022.08.17