Pāriet uz saturu
APIFLY
lv en
Visi raksti

Idempotence: kāpēc viens pieteikums nedrīkst aiziet pie kreditētāja divreiz

Tīkla kļūdas un atkārtoti pieprasījumi ir neizbēgami. Skaidrojam, kā idempotence pasargā no dubultiem pieteikumiem un kāpēc tas ir svarīgi kreditēšanā.

2 min lasīšanai

Problēma, ko neviens neplāno

Platforma nosūta pieteikumu, bet atbilde neatnāk — savienojums pārtrūka, serveris atbildēja pārāk lēni vai lietotājs vēlreiz nospieda pogu. Loģiskākā rīcība ir mēģināt vēlreiz. Bet ko tad, ja pirmais pieprasījums patiesībā bija veiksmīgs?

Bez aizsardzības kreditētājs saņem divus vienādus pieteikumus. Klientam tas var nozīmēt dubultu kredītvēstures pārbaudi, divus zvanus no kreditētāja vai mulsinošus, dublētus piedāvājumus. Platformai — sarežģītus labojumus un neapmierinātu partneri.

Kas ir idempotence

Pieprasījums ir idempotents, ja to var atkārtot jebkuru reižu skaitu, bet rezultāts paliek tāds pats kā pēc pirmās reizes. Lai to panāktu, katram pieteikumam vajag unikālu identifikatoru, ko piešķir pati platforma — piemēram, savu iekšējo pieteikuma numuru.

Kā tas strādā Apifly

Katrā pieprasījumā platforma norāda savu pieteikuma identifikatoru client_submission_id:

POST /api/submissions

{
  "client_submission_id": "app-10482",
  "lender_codes": ["lender-a", "lender-b"],
  "applicant": { ... },
  "application": { "amount": 3000, "term_months": 24 }
}
  • Saņemot pieteikumu pirmo reizi, Apifly to saglabā, nosūta izvēlētajiem kreditētājiem un atbild ar 202 Accepted.
  • Ja tas pats client_submission_id pienāk vēlreiz, Apifly atgriež jau saglabāto pieteikumu ar 200 OK un nesūta to kreditētājiem atkārtoti.

Tātad pēc statusa koda uzreiz redzams, vai pieteikums tikko pieņemts vai bija jau zināms, un pēc jebkuras tīkla kļūdas var droši mēģināt vēlreiz.

Tas pats princips arī atpakaļceļā

Arī kreditētāji mēdz vienu un to pašu atbildi nosūtīt vairākas reizes. Apifly identiskas atkārtotas atbildes atfiltrē, tāpēc tās nemaina pieteikuma stāvokli un neizraisa liekus paziņojumus jūsu sistēmai. Savukārt katram webhook paziņojumam ir stabils event_id, lai dublikātus varētu atpazīt arī jūsu pusē.

Secinājums

Idempotence nav papildu funkcija, bet pamatprasība jebkurai integrācijai, kas strādā ar finansēm un personas datiem. To ir vērts ieviest vienreiz savienotājā, nevis atsevišķi katrā integrācijā ar katru kreditētāju.

Parunāsim par jūsu integrācijām

Pastāstiet, ar kādiem kreditētājiem vai platformām strādājat, un parādīsim, kā tos savienot caur vienu API.

Citi raksti