이해

PRG패턴

일일일코_장민기 2024. 2. 19. 16:48
728x90

PRG 패턴 (Post-Redirect-Get)

웹 개발 패턴 중 자주 쓰이는 패턴으로 HTTP POST 요청에 대한 응답이 또 다른 URL로의 GET 요청을 위한 리다이렉트(응답 코드가 3XX) 여야 한다는 것을 의미한다. 
즉, 쉽게 설명하면 POST 방식으로 온 요청에 대해서 GET 방식의 웹페이지로 리다이렉트 시키는 패턴을 말한다.

 

PRG 패턴을 사용하지 않으면 발생하는 문제점

첫번째로 새로고침으로 인한 동일한 요청이 연속적으로 보내지는 이슈가 발생한다는 것이다. 만약 이 이슈가 중요하지 않은 로직이 있는 부분이라면 상관없겠지만 결제 같은 중요한 로직에서는 중복 결제가 일어나는 문제가 발생한다.

 

두 번째로는 POST 요청은 URL을 복사하더라도 다른 사람과 공유할 수 없다는 점이 문제가 된다. POST 요청을 보내게 되면 Parameter 값들이 URL에 남겨있지 않기에 특정 Paramter 가 필요한 POST 요청인 경우 URL을 복붙 하더라도 에러 페이지만 보이게 될 것이다.


@Controller
class TestController {

    @GetMapping
    public String main(){
        return "main";
    }

    @PostMapping("/pay")
    public String pay(){
        // 결제 로직
        return "redirect:/success";
    }

    @GetMapping("/success")
    public String success(){
        return "success";
    }
}

'이해' 카테고리의 다른 글

데이터 형식 주요 어노테이션  (0) 2024.02.23
data-속성 사용  (0) 2024.02.20
ViewerParsing 이해  (0) 2024.02.19
EL과 JSTL  (0) 2024.02.14
root-context와 servlet-context  (0) 2024.02.14