728x90
반응형

💡 PRG 패턴이란?

PRG(Post-Redirect-Get) 패턴은 웹 개발에서 POST 요청 후 직접 응답하지 않고, 다른 URL로 리다이렉트한 후 GET 요청을 유도하는 방식입니다.
즉, 사용자의 POST 요청 처리 후 바로 페이지를 반환하는 대신, 3XX Redirect 응답으로 GET 요청을 유도하는 구조입니다.


❗ 왜 PRG 패턴이 필요할까?

1. ⚠️ 새로고침으로 인한 중복 요청 방지

  • PRG를 사용하지 않으면
    POST 요청 후 바로 HTML 페이지를 응답할 경우, 사용자가 새로고침(F5) 하면 같은 POST 요청이 서버에 다시 전송됨
  • 예시:
    • 온라인 쇼핑몰에서 결제 후 새로고침 시 → 중복 결제 발생 가능 😨

2. 🧭 URL 공유 및 북마크가 불가능

  • POST 요청은 URL에 직접 접근할 수 없기 때문에, 북마크나 공유가 불가능
  • PRG 패턴은 GET 요청으로 연결되므로 URL 공유 및 즐겨찾기 가능

🔄 PRG 패턴 흐름도

[1] 사용자가 Form을 제출 → (POST)
        ↓
[2] 서버가 처리 후 Redirect 응답 (3xx) → /result
        ↓
[3] 브라우저가 자동으로 GET 요청 → /result
        ↓
[4] /result 페이지 렌더링

✅ PRG 패턴을 사용할 때 (권장 시나리오)

상황PRG 적용설명
게시글 등록 O 등록 후 /posts/123으로 리다이렉트
회원가입 처리 O 성공 시 /welcome 페이지로 이동
결제 처리 O 완료 후 /order/완료번호로 이동
 

❌ PRG 패턴을 사용하지 않을 때 (위험)

문제설명
새로고침 시 중복 POST 발생 서버에 두 번 요청이 전송될 수 있음
URL 공유 불가 POST 요청은 URL로 직접 접근 불가
즐겨찾기 불가 GET 방식이 아니므로 URL 저장 의미 없음
728x90
반응형

+ Recent posts