El botó gira, la pestanya mostra un error i el formulari que heu trigat deu minuts a omplir ha desaparegut. El que no sabeu és si l’escriptura va arribar abans que morís la connexió. Tractar aquesta incògnita com una fallada és com es creen comentaris duplicats, comandes dobles i tiquets de suport repetits.

Recupereu en un ordre fix: conserveu el text, trobeu el resultat i només després decidiu si es permet un segon enviament.

Comenceu pel text i la marca de temps

Copieu el contingut de la pàgina abans de tocar res més, inclòs qualsevol esborrany que el navegador encara tingui al camp. Anoteu l’hora, la pàgina on éreu i l’acció que heu fet, perquè aquests tres detalls són els que fan possible la resta de la investigació. Si la pestanya encara és oberta, deixeu-la oberta fins que hàgiu llegit l’entrada de xarxa. Desar el text no costa res i perdre’l costa tota la feina.

Després separeu les dues formes de fallada que realment podeu observar. Una connexió que va caure a mig camí de la petició i un servidor que va respondre amb un error es veuen diferents al tauler de xarxa, i només la segona us diu alguna cosa sobre la decisió de l’aplicació.

Busqueu el resultat a la vista pròpia de l’aplicació

Recarregueu la vista de lectura que mostraria el resultat: la llista de comentaris, l’historial de comandes, la cua de tiquets o el registre que estàveu editant. Compareu per compte, destinació, hora i contingut en lloc de per l’entrada més recent, perquè algú altre pot haver escrit després de vosaltres. Per a una tasca en segon pla, cerqueu la referència existent i el seu estat en lloc de crear una operació nova com a prova de connectivitat.

Si el resultat hi és, heu acabat i l’error pertany al camí de la resposta, no a l’escriptura. Si no hi és, manteniu la possibilitat que l’aplicació encara no l’hagi desat: una tasca en cua, una vista de lectura endarrerida o una rèplica retardada poden amagar durant un temps una escriptura correcta.

Doneu-hi una segona mirada definida abans de treure’n cap conclusió, i anoteu l’hora de les dues comprovacions. Dues comprovacions separades per vint segons són molta menys prova que dues comprovacions separades per deu minuts.

Decidiu si un segon enviament és segur

La resposta depèn de l’operació, no de la vostra paciència. HTTP separa els mètodes que es poden repetir amb el mateix efecte previst dels que no, i aconsella no reintentar automàticament els del segon tipus llevat que se sàpiga que la semàntica ho permet. Crear un comentari, fer una comanda i enviar un pagament solen ser del segon grup, i per això un segon clic que sembla correcte no diu res del primer.

Si manteniu el client, feu servir el mecanisme de reintent o d’idempotència que documenta l’API, i lligueu-lo a la mateixa operació lògica en lloc de generar una clau nova per a cada intent. Un identificador de petició usat per al seguiment no és una clau de supressió de duplicats llevat que el servidor el tracti com a tal.

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

La clau només ajuda si el servei l’emmagatzema associada a l’operació i retorna el resultat original en una repetició. Proveu aquest comportament en un punt de prova abans de confiar-hi en producció.

Recolliu proves abans de tornar a prémer res

Conserveu l’entrada de xarxa en lloc d’una captura de pantalla de l’error. El mètode de la petició, l’URL, la resposta o el temps d’espera i l’hora en què va passar són el que un administrador pot correlacionar amb els registres de l’aplicació. Exporteu o copieu l’entrada com una ordre només si després traieu de la còpia les galetes, les capçaleres d’autorització i qualsevol contingut privat. Deixeu intacta la vostra pròpia sessió i no repetiu mai una petició capturada amb credencials com a drecera.

Pregunteu al propietari del servei una pregunta concreta: l’operació amb aquest contingut en aquest moment va tenir èxit, i hi ha una referència? Aquesta pregunta té resposta, mentre que "el lloc s’ha trencat" no en té.

El sentit de l’exercici és establir que l’acció va passar exactament una vegada. Un missatge d’error que podeu descartar no és el mateix que un registre en què podeu confiar, i el segon és el que necessiteu abans d’enviar qualsevol altra cosa.

Articles relacionats