티스토리 뷰

IT

[Pattern] Post-Redirect-Get 패턴

주인장 진빼이

음 톡방에서 PRG라는 생소한 단어가 언급되어 찾아보았다.

 

Post Redirect Get

이 패턴은 웹 개발에 권장되는 패턴 중 하나라고 하며,

Post 요청에 대한 처리가 끝마치면 새로운 URL을 GET 방식으로 다시 Redirect를 하는 패턴이다.

 

왜 해야할까 ?

예시를 들어보자.

 

주문 정보를 입력 후(/order) 마지막에 [확인] 버튼을 누르면

결제 및 주문서 등록이 되는 페이지(/order/finish)가 있다고 생각해보자.

 

submit 버튼을 누름으로써 /order 페이지에서 /order/finish 페이지로 이동된 상황이다.

이때 /order/finish 페이지에서 주문이 완료되었다는 텍스트가 보여진다.

 

이 페이지에서 새로고침을 누르면 어떻게 될까?

주문을 1개 완료한 상태에서 그대로 새로고침한다면 다시 동일한 주문 데이터가 서버에 추가될 것이다.

Post 전송은 파라메터로 넘겨준 데이터를 그대로 들고 있기 때문에 새로고침 시 동일한 처리가 진행된다.

 

이를 방지하려면 ?

/order/finish 페이지에서 모든 데이터 처리가 종료되었다면

/order/finish_result 페이지로 Redirect 하여 제2의 페이지에서 주문 완료를 보여주는 것이다.

/order/finish_result 페이지에서 아무리 새로고침을 하여도 주문 데이터는 추가되지 않는다.

 

 

그림으로 쉽게 살펴보자

첫번째 사진은 Redirect를 하지 않으면 처리되는 흐름이다.

새로고침을 할 때마다 주문 정보가 계속 추가될 수 밖에 없다.

 

두번째 사진은 새로고침을 여러번 하여도 Redirect로 인해

주문을 처리하는 페이지와 다르므로 주문 정보가 추가 되지 않는다.

 

 

Post 요청에 대한 데이터를 처리했다면 302 Redirect를 잊지말자.

 

 

 

 

 

 

 

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함