PRG란?
- Post 방식으로 온 요청에 대하여 GET방식의 웹페이지로 리다이렉트 시키는 패턴을 말한다.
- POST --> REDIRECT --> GET
PRG패턴을 사용하지 않을경우 문제점
- 새로고침으로 인한 동일한 요청 (POST)이 연속적으로 보내지는 이슈가 발생한다는 것이다.
만약 이 이슈가 중요하지 않은 로직이 있는 부분이라면 상관없겠지만 결제 같은 중요한 로직에서는 중복 결제가 일어나는 문제가 발생한다.
PRG 패턴 적용 코드
@Controller
class TestController {
@GetMapping
public String home(){
return "home";
}
@PostMapping("/pay")
public String pay(){
// 결제 로직
// POST방식임으로 새로고침 이슈를 막기위해 redirct로
// success의 GET방식을 호출한다
return "redirect:/success";
}
@GetMapping("/success")
public String success(){
return "success";
}
}