حل مشکل resend data هنگام رفرش بروزر با الگوی (PRG)

26 اردیبهشت 1400

قبل از توضیح این الگو بگویم که اگر از ajax استفاده میکنید اصلا به این ارور برنمیخورید که نیاز باشد از این الگو ارور را حل کنید. بهترین راه هم همین است.

هنگام توسعه بک اند مثلا Node.js یک فرم طراحی کردید. فرم را سابمیت کردید. حالا بروزر را رفرش کنید! ارور میدهد و میگوید resend data . مانند ارور زردرنگ وسط تصویر زیر. میخواهد یکبار دیگر اطلاعات را POST کند. اگر GET بود مشکل نداشت. پس بیایید POST را به GET تبدیل کنیم.

در این تصویر مشاهده میکنید که هنگام رفرش بروزر دوباره اطلاعات POST میشود.

راه حل: ریدایرکت POST با حالت 3xx به روت GET

مطابق تصویر زیر باید کدنویسی کنیم! یک GET API میسازیم. سپس POST API را با یک ریدایرکت 3xx (مثلا 301 یا 302) به GET API میفرستیم. به این الگو Post/Redirect/Get (PRG) میگویند.

در این تصویر هنگام رفرش بروزر اطلاعات دوباره GET میشود.