Spring

PRG(Post-Redirect-GET) 패턴

jaewoo 2022. 8. 22. 19:48

MVC 구조에서 흔하게 사용되는 패턴이 PRG 패턴이다. 

PRG의 흐름은 대충

 

- 사용자는 Controller에 원하는 작업(저장,수정,삭제)을 POST 방식으로 처리요청을 날린다.

-POST 방식을 Controller에서 처리하고 브라우저는 다른 경로로 요청(GET)하라는 응답(Redirect)한다.

-GET방식으로 지정한 곳으로 이동한다.

 

 

Redirect를 사용하면 브라우저의 주소가 아예 변경되기 때문에 사용자의 새로고침과 같은 계속 되는 요청을 미리 방지할 수 있고 특저앟ㄴ 작업이 완전히 끝나고 새로 시작하는 흐름을 만들 수 있다.

 

 

게시판에서 대표적으로 사용되는 경우

-게시판에서 글을 쓸 경우 서버에 Post요청을 날리게 된다. 요청을 받은 서버에서는 원하는 작업(데이터 저장)을 수행하고 redirect로 지정한 곳으로 다시 GET요청을 날리는데 주로 글을 저장한뒤 루트(게시물이 있는 홈)으로 돌아간다. 

 

주의할점

POST 요청 같은 경우 다시 클라이언트에게 보낼 데이터가 없기 떄문에 Redirect를 하지만 GET 요청을 받을 경우 다시 Redirect를 할 경우 데이터를 다 버리고 다시 요청을 보내기 때문에 GET에서는 다른 방법을 사용하는 것이 좋다.

아니면 Session을 사용하는 @RedirectAttributes을 사용한다면 model에 값을 끊어내지 않고 보낼 수 있다.