Կոճակը պտտվում է, ներդիրը սխալ է ցույց տալիս, և տասը րոպե լրացրած ձևը անհետացել է։ Դուք չգիտեք՝ գրառումը հասցրե՞լ է կատարվել մինչև կապի կտրվելը։ Այդ անհայտը որպես ձախողում դիտարկելն է, որ ստեղծում է կրկնվող մեկնաբանություններ, կրկնակի պատվերներ և կրկնվող աջակցության տոմսեր։

Վերականգնեք հաստատուն հերթականությամբ՝ պահեք տեքստը, գտեք արդյունքը և միայն դրանից հետո որոշեք՝ թույլատրվա՞ծ է երկրորդ ուղարկումը։

Սկսեք տեքստից և ժամանակի նշանից

Պատճենեք բովանդակությունը էջից, նախքան որևէ այլ բանի դիպչելը, ներառյալ ցանկացած սևագիր, որը բրաուզերը դեռ պահում է դաշտում։ Գրեք ժամը, էջը, որտեղ եղել եք, և կատարած գործողությունը, քանի որ հենց այդ երեք մանրամասներն են հնարավոր դարձնում մնացած քննությունը։ Եթե ներդիրը դեռ բաց է, թողեք բաց, մինչև կարդաք ցանցի գրառումը։ Տեքստը պահելը ոչինչ չարժե, իսկ կորցնելը՝ ամբողջ առաջադրանքը։

Այնուհետև առանձնացրեք ձախողման երկու ձևերը, որոնք իսկապես կարող եք դիտել։ Հարցման կեսին կտրված կապը և սխալով պատասխանած սերվերը ցանցի վահանակում տարբեր տեսք ունեն, և միայն երկրորդն է որևէ բան ասում հավելվածի որոշման մասին։

Արդյունքը փնտրեք հավելվածի սեփական տեսքում

Վերբեռնեք ընթերցման այն տեսքը, որը ցույց կտա արդյունքը՝ մեկնաբանությունների ցանկը, պատվերների պատմությունը, տոմսերի հերթը կամ ձեր խմբագրած գրառումը։ Համեմատեք ըստ հաշվի, նպատակակետի, ժամանակի և բովանդակության, այլ ոչ թե ամենավերջին գրառման, քանի որ ուրիշը կարող է ձեզանից հետո գրել։ Ֆոնային առաջադրանքի համար փնտրեք գոյություն ունեցող հղումը և դրա կարգավիճակը, փոխանակ կապի փորձարկման համար նոր գործողություն ստեղծելու։

Եթե արդյունքը այնտեղ է, դուք ավարտել եք, և սխալը պատասխանի ուղուն է պատկանում, ոչ թե գրառմանը։ Եթե չկա, պահեք այն հավանականությունը, որ հավելվածը դեռ չի հաստատել այն՝ հերթում գտնվող առաջադրանքը, ուշացած ընթերցման տեսքը կամ հետ մնացող կրկնօրինակը կարող են որոշ ժամանակ թաքցնել հաջող գրառումը։

Նախքան եզրակացնելը տվեք դրան որոշակի երկրորդ հայացք և գրի առեք երկու ստուգումների ժամանակը։ Քսան վայրկյան ընդմիջումով երկու ստուգումը շատ ավելի թույլ ապացույց է, քան տասը րոպե ընդմիջումով երկուսը։

Որոշեք՝ երկրորդ ուղարկումը անվտանգ է

Պատասխանը կախված է գործողությունից, ոչ թե ձեր համբերությունից։ 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-ը, պատասխանը կամ ժամկետի ավարտը և դրա տեղի ունեցած ժամանակը այն են, ինչ ադմինիստրատորը կարող է կապել հավելվածի գրառումների հետ։ Արտահանեք կամ պատճենեք գրառումը որպես հրաման միայն այն դեպքում, եթե դրանից հետո պատճենից հեռացնեք cookie-ները, նույնականացման վերնագրերը և ցանկացած գաղտնի բովանդակություն։ Թողեք ձեր սեփական սեսիան անձեռնմխելի և երբեք չկրկնեք որսված՝ հավատարմագրեր պարունակող հարցումը որպես կարճ ճանապարհ։

Ծառայության տիրոջը տվեք մեկ կոնկրետ հարց՝ արդյո՞ք այս բովանդակությամբ այս պահին գործողությունը հաջողվել է, և կա՞ դրա հղումը։ Այս հարցն ունի պատասխան, մինչդեռ "կայքը կոտրվե՞ց" հարցը՝ ոչ։

Վարժության իմաստը հաստատելն է, որ գործողությունը տեղի է ունեցել ուղիղ մեկ անգամ։ Սխալի հաղորդագրությունը, որը կարող եք փակել, նույնը չէ, ինչ գրառումը, որին կարող եք վստահել, և երկրորդն է այն, ինչ ձեզ պետք է նախքան որևէ այլ բան ուղարկելը։

Առնչվող հոդվածներ