Programming/Design Pattern
✅ PRG(Post-Redirect-Get) 패턴 – 새로고침 중복방지와 공유 가능한 웹 설계의 핵심
추천캐릭터
2022. 10. 31. 15:53
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
반응형