본문 바로가기
Programming/Design Pattern

PRG 패턴 (Post-Redirect-Get)이란?

by 추천캐릭터 2022. 10. 31.
728x90

PRG(Post-Redirect-Get) 패턴은 웹 개발 시 권장되는 디자인 패턴중 하나로, HTTP POST 요청에 대한 응답이 또 다른 URL로의 GET 요청을 위한 리다이렉트(응답 코드가 3XX)여야 한다는 것을 의미한다. 즉, 일반적인 HTTP GET 요청처럼 HTTP POST 요청에 대한 응답이 어떠한 페이지를 직접 반환하는 것은 권장되지 않는 위험한 방식이라는 것이다.
● PRG 패턴의 필요성
PRG 패턴을 사용하지 않는 다면, 대표적으로 다음과 같은 두가지 문제점이 발생할 수 있다.
첫째, 새로고침으로 인해 동일한 HTTP POST 요청이 중복으로 발생하여 의도치 않은 결과를 낳을 수 있다. 만약 HTTP POST 요청에 대한 응답이 단순히 어떠한 페이지를 직접 반환하는 것이라면, 이후 새로고침을 시도했을 때 방금 전에 전송한 HTTP POST 요청이 그대로 다시 서버에 전송된다. 이는 의도치 않은 결과를 낳을 수 있다. 예를 들어, 온라인 물품 구매 후 새로고침을 하면 중복 구매가 이뤄질 수 있다.

둘째, HTTP POST 요청의 결과에 해당하는 페이지를 북마크 하거나 다른 사람과 공유하는 것이 어려워진다. 북마크(즐겨찾기)는 특정 HTTP 요청의 URL만을 저장하고, 다른 사람에게 해당 페이지를 공유할 때도 오로지 URL만을 공유한다. 기본적으로 사용자는 URL만 가지고는 HTTP GET 요청밖에 할 수 없기 때문에, 이는 의도와 다른 페이지로 이동하는 결과를 낳게 된다. 그러나 만약 PRG 패턴을 따른다면 HTTP POST 요청에 대한 응답을 받자마자 다시 특정 URL로의 HTTP GET 요청을 전송하기 때문에, 해당 URL을 북마크 하거나 다른 사람과 공유하는 것이 가능해진다.

PRG 패턴을 사용하지 않을 떄 - 위험
PRG 패턴을 사용할 때 - 권장

https://it-eldorado.tistory.com/68

[Web] PRG (Post-Redirect-Get) 패턴

1. PRG (Post-Redirect-Get) 패턴이란? PRG(Post-Redirect-Get) 패턴은 웹 개발 시에 권장되는 디자인 패턴 중 하나로, HTTP POST 요청에 대한 응답이 또 다른 URL로의 GET 요청을 위한 리다이렉트(응답 코드가 3X..

it-eldorado.tistory.com

728x90

'Programming > Design Pattern' 카테고리의 다른 글

MVC 패턴(Model-View-Controller)이란?  (1) 2022.10.29
싱글톤 패턴(Singletone Pattern)이란?  (0) 2022.10.29

댓글