ایا هغې نېټې ختمې شوې لېږنه واقعاً ستاسو کار خوندي کړ؟
د براوزر تېروتنه ښيي چې ځواب ونه رسېد، نه دا چې ليکنه پاتې راغله. متن خوندي کړئ، په اپليکيشن کې پايله ومومئ، بيا پرېکړه وکړئ چې بيا هڅه خوندي ده که نه.
تڼۍ څرخي، ټب تېروتنه ښيي، او هغه فورم چې لس دقيقې مو ډکاوه ورک شو. هغه څه چې نه يې پوهېږئ دا دي چې ايا ليکنه د اړيکې له پرې کېدو مخکې ورسېده. همدا نامعلومه د ناکامۍ په توګه ګڼل هغه لاره ده چې دوه ځله تبصرې، دوه ځله فرمایشونه او تکراري ملاتړ ټکټونه جوړوي.
په ټاکلې ترتيب سره بيا راولي: متن وساتئ، پايله ومومئ، او يواځې له هغې وروسته پرېکړه وکړئ چې دويمه لېږنه اجازه لري که نه.
له متن او د وخت له نښې پيل وکړئ
له بل هر څه لاس وهلو مخکې منځپانګه له پاڼې کاپي کړئ، هغه مسوده هم چې براوزر لا په ساحه کې ساتي. وخت، هغه پاڼه چې پرې وئ او هغه کړنه چې مو وکړه وليکئ، ځکه همدا درې توکي پاتې څېړنه ممکنوي. که ټب لا پرانيستې وي، تر هغې يې پرانيستې پرېږدئ چې د شبکې ننوت لوستل کړئ. متن خوندي کول هېڅ لګښت نه لري، او ورکول يې د ټول کار لګښت دی.
بيا هغه دوه ډوله خرابۍ سره جلا کړئ چې واقعاً يې ليدلی شئ. هغه اړيکه چې د غوښتنې په منځ کې پرې شوه او هغه سرور چې په تېروتنه ځواب ورکړ، په شبکه پينل کې بېل ښکاري، او يوازې دويمى د اپليکيشن د پرېکړې په اړه يو څه وايي.
په خپل اپليکيشن کې د پايلې پلټنه وکړئ
هغه لوستنې کتنه بيا بار کړئ چې پايله به ښيي: د تبصرو لړليک، د فرمایشونو تاريخ، د ټکټونو کتار يا هغه ریکارډ چې سمول یې کول. د تر ټولو نوي ننوت پر ځای د حساب، منزل، وخت او منځپانګې له مخې ورته وګورئ، ځکه کېداى شي بل چا له تاسو وروسته ليکلي وي. د شاليد کار لپاره، د اړيکې ازموينې په توګه نوی عمليات جوړولو پر ځای موجود حواله او د هغې حالت پلټنئ.
که پايله هلته وي، تاسو تمام شوئ او تېروتنه د ليکنې نه، د ځواب لارې ده. که نه وي، دا امکان وساتئ چې اپليکيشن لا تر اوسه نه ده ټينګه کړې: په کتار کې کار، ځنډېدلې لوستنې کتنه يا وروسته پاتې کاپي کېداى شي بريالې ليکنه يو څه وخت پټه کړي.
له پايلې رسولو مخکې ورته ټاکلې دويمه کتنه ورکړئ، او د دواړو څېړنو وخت وليکئ. شل ثانيې وقفې لرونکې دوه څېړنې لس دقيقې وقفې لرونکو دوو څېړنو څخه ډېر کمزوري شواهد دي.
پرېکړه وکړئ چې دويمه لېږنه خوندي ده که نه
ځواب پر عملياتو ولاړ دی، نه پر ستاسو صبر. HTTP هغه مېتودونه چې د هماغې موخې اغېزې سره تکرارېدلى شي له هغو جلا کوي چې نشي، او د دويم ډول خودکار تکرار پر ضد سلا ورکوي، پرته له دې چې معلومه وي چې مانا اجازه ورکوي. تبصره جوړول، فرمایش کول او تاديه لېږل معمولاً په دويمه ډله کې دي، نو ځکه دويم بريالى ښکارېدونکی کليک د لومړي په اړه هېڅ نه وايي.
که تاسو کليانټ ساتئ، هغه بيا هڅې يا ايډمپوټنسي میکانيزم وکاروئ چې API يې مستند کړی، او د هرې هڅې لپاره نوی کيلي جوړولو پر ځای يې هماغې منطقي عملياتو ته وتړئ. د تعقيب لپاره کارېدونکى د غوښتنې پېژندونکى د تکرار د مخنيوي کيلي نه دی، پرته له دې چې سرور يې همداسې وګڼي.
curl -i -X POST https://api.example.net/v1/orders \
-H "Idempotency-Key: 6f1c2a94-3b7e-4a10-9c22-5d0e8f7b1a63" \
-H "Content-Type: application/json" \
--data @order.jsonکيلي يوازې هغه وخت مرسته کوي چې خدمت يې له عملياتو سره ساتي او په تکرار کې اصلي پايله بېرته راګرځوي. دا چلند د توليد په چاپېريال کې پرې تکيه کولو مخکې په ازموينې پای ټکي کې وازموئ.
له بيا کېلو مخکې شواهد راټول کړئ
د تېروتنې سکرين شاټ پر ځای د شبکې ننوت وساتئ. د غوښتنې مېتود، URL، ځواب يا د وخت پای او هغه وخت چې پېښ شو، همدا هغه څه دي چې مدير يې د اپليکيشن له ثبتونو سره اړوندولى شي. ننوت د کمانډ په توګه صادر يا کاپي کړئ، يوازې هغه وخت چې بيا له کاپي څخه کوکيز، اجازې سرليکونه او هر ډول شخصي منځپانګه لرې کړئ. خپله ناسته پوره پرېږدئ، او هېڅکله نيول شوې د اعتبار وړ غوښتنه د لنډې لارې په توګه بيا ونه څرخوئ.
د خدمت له خاوند څخه يو څرګند پوښتنه وکړئ: ايا دا عمليات په دې منځپانګه او په دې وخت کې بريالي شو، او ايا ورته حواله شته؟ دې پوښتنې ځواب لري، خو "ايا وېبپاڼه ماتېده" ځواب نه لري.
د دې تمرين مانا دا ده چې ثابته شي کړنه په سمه توګه يو ځل پېښه شوې. هغه تېروتنې پيغام چې بندولى شئ هغه ثبت ته چې پرې باور کولى شئ برابر نه دی، او تر بل هر څه لېږلو مخکې تاسو ته دويم ته اړتيا ده.