PRG

바그다드·2023년 5월 3일
0


1. 클라이언트에서 상품 등록 폼 요청(GET)
2. 서버에서 상품 등록 폼 반환
3. 클라이언트에서 상품 저장 요청(POST)
4. 서버에서 상품 저장 후 해당 상품 상세 페이지 반환
5. 클라이언트에서 새로고침 시도

  • post메서드를 이용해 상품을 저장을 완료하고, 서버에서 단순히 상품 상세 페이지를 표시를 할 경우에 사용자가 새로고침을 시도하면 브라우저는 자신이 했던 가장 최근의 요청을 다시 보내게 된다.
    위의 경우에서는 가장 최근 요청인 3.상품 저장 요청(POST)을 앞서 했던 요청과 똑같은 파라미터와 메서드로 서버에 다시 상품 저장을 요청한다.
    이럴 경우 똑같은 등록 요청이 서버에 중복되어 보내진다.
  • 그렇다면 이런 문제는 어떻게 해결해야 할까?

Redirect 반환


0. 클라이언트가 상품 등록 폼을 요청하면 서버에서 상품 등록폼을 반환
1. 클라이언트가 상품 등록을 요청(POST)
2. 서버는 상품 저장을 완료하고 해당 아이템의 위치로 Redirect를 반환
3. 클라이언트는 서버에서 받은 주소인 상품 상세 페이지 요청(GET)
4. 클라이언트에서 새로고침 시도

  • 이렇게 구현하면 클라이언트가 새로고침을 시도해도 브라우저에서 가장 최근에 시도했던 요청이 3.상품 상세 페이지 요청(GET)이므로 데이터의 중복 등록을 막을 수 있다.
profile
꾸준히 하자!

0개의 댓글