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
반응형
'Programming > Design Pattern' 카테고리의 다른 글
| 📌Java static vs Singleton 완벽 비교: 언제 어떤 걸 써야 할까? (1) | 2025.07.31 |
|---|---|
| ✅ [프록시 패턴 완벽 이해] 프록시 서버부터 UML, 활용 사례까지 총정리! (0) | 2022.10.30 |
| ✅ [MVC 패턴 완벽 정리] 모델-뷰-컨트롤러 쉽게 이해하기 (쇼핑리스트 예제 포함) (1) | 2022.10.29 |
| 👉 자바 싱글톤 패턴(Singleton) 개념과 구현 예제 – 객체 하나만 생성하는 이유와 주의점 정리 (0) | 2022.10.29 |