Spring) PRG 패턴

오성민·2023년 1월 17일
0

spring

목록 보기
14/17
post-thumbnail

spring 강의를 듣던 중 중요한 내용이 있어서 정리를 하기 위해서 글을 작성한다.

PRG 패턴

PRG 패턴이란, Post-Redirect-Get의 흐름을 가지는 패턴을 말한다.

사용하지 않았을 때 문제점

웹을 통한 작업을 하는 중에 아마 한 번 쯤은

이런 경고창을 본 적이 있을 것이다.

해당 패턴을 사용하지 않으면 발생하는 가장 큰 문제점은 이 문제점이다.

바로 클라이언트가 서버로 POST 요청을 보내고, 실수로 새로고침 혹은 뒤로가기를 할 경우에 다시 POST 요청을 보내게 된다.
이런 경우 중복적으로 실행되면 안되는 로직 ( ex) 결제, 회원가입, 물품등록 등등... )도 중복으로 실행되게 된다.

중복으로 실행이 되어도 문제가 발생이 되지 않는 로직이면 상관이 없겠지만, 중복으로 실행이 되면 안되는 로직이라면 큰 문제가 발생을 한다.

이러한 문제가 발생하는 원인

결론을 먼저 얘기를 한다면 서버에서 POST 요청을 처리하고 결과 뷰를 보여줘서 이러한 문제가 발생하게 된다.
웹 페이지는 새로고침 혹은 뒤로가기를 한다면 가장 최근 처리를 다시 수행하게 되는데 여기에서 로직이 반복적으로 실행하게 된다.

해결방법

해당 PRG를 보면 알 수 있듯이 POST 요청을 처리하면 서버에서 302 code와 redirect url을 보내서 redirect로 다시 GET 요청을 보내게 하는 것이다.

해결되는 이유

redirect는 뷰를 바로 보여주는 것이 아닌, redirect url로 다시 요청을 보내는 것이다.
그러므로 가장 최근 요청이 post 요청이 아닌 redirect url로 보내는 get 요청이므로 post 요청이 중복으로 처리되지 않는다.

profile
풀스택을 지향하는 개발자

0개의 댓글