Skip to main content
Faqja kryesoreBlogStatusi i dorëzimit të API-së së transportit: Kodet e statusit, webhook-et dhe sinjalizimet për përjashtime

Statusi i dorëzimit të API-së së transportit: Kodet e statusit, webhook-et dhe sinjalizimet për përjashtime

17TRACK

Statusi i dorëzimit në një API transporti përshkruan përparimin e një dërgese, jo nëse një kërkesë API ka pasur sukses. Për të ndërtuar gjurmim të besueshëm, mbani të ndara kodet e përgjigjeve HTTP nga statuset e dërgesave, përpunoni webhook-et pa supozuar se mbërrijnë vetëm një herë ose sipas rendit, dhe shndërroni përjashtimet që kërkojnë veprim në sinjalizime me përgjegjës të qartë. Për ekipet e inxhinierisë dhe operacioneve të tregtisë elektronike, qëllimi është një regjistrim dërgese që mbetet i besueshëm kur përditësimet e transportuesit vonohen, përsëriten ose korrigjohen.

Kodet e statusit të dorëzimit të API-së së transportit, webhook-et dhe sinjalizimet e përjashtimeve

Ky udhëzues shpjegon si të strukturoni këtë regjistrim, si të trajtoni ngjarjet hyrëse të gjurmimit dhe si të dalloni një problem dorëzimi nga një problem integrimi të gjurmimit.

Ndani kodet HTTP, rezultatet e API-së dhe statuset e dërgesave

Shprehja “kod statusi” mund t’u referohet tri shtresave të ndryshme. Përzierja e tyre krijon panele mashtruese dhe njoftime të panevojshme për klientët.

ShtresaÇfarë ju tregonShembull interpretimi
Përgjigjja HTTPRezultati i kërkesës HTTPNjë përgjigje 200 tregon sukses në nivelin HTTP; nuk do të thotë se paketa është dorëzuar.
Rezultati i biznesit të API-sëNëse operacioni i kërkuar ka pasur sukses sipas rregullave të aplikacionit të ofruesitTrupi i përgjigjes mund të raportojë se regjistrimi i gjurmimit është refuzuar, edhe brenda një përgjigjeje të suksesshme HTTP nëse API-ja përdor këtë model.
Statusi i dërgesësGjendja fizike ose operacionale e raportuar e paketësNë transport, në pritje të marrjes ose e dorëzuar.

Standardi i semantikës HTTP përcakton kuptimet e përgjigjeve HTTP. Për shembull, 202 Accepted do të thotë se një kërkesë është pranuar për përpunim, por përpunimi nuk ka përfunduar domosdoshmërisht. Kjo nuk është dëshmi se një transportues e ka pranuar paketën.

Po kështu, një kërkesë e dështuar gjurmimi nuk provon se një dërgesë ka ndaluar së lëvizuri. Aplikacioni juaj mund të humbasë përkohësisht dukshmërinë ndërsa dorëzimi fizik vazhdon normalisht. Monitorojini këto shtresa në mënyrë të pavarur.

Krijoni një model statusesh pa hequr detajet e transportuesit

Nuk ekziston një kod numerik universal i statusit të dorëzimit që ndahet nga çdo API transporti dhe çdo transportues. Një vlerë nga një integrim nuk duhet të interpretohet duke përdorur hartëzimin e një ofruesi tjetër. Përdorni dokumentacionin për versionin specifik të API-së që zbatoni.

Një model praktik i brendshëm kombinon një grup të vogël statusesh të normalizuara me ngjarjen origjinale të transportuesit. Normalizimi mbështet raportim të qëndrueshëm; ngjarja origjinale ruan detajet e nevojshme për hetim.

Statusi i brendshëm ilustruesKuptimiKujdesi operacional
Informacioni u morEkziston informacion elektronik për dërgesën.Mos e konsideroni krijimin e etiketës si dorëzim fizik të konfirmuar.
Në transportRegjistrimi i gjurmimit tregon lëvizje përmes rrjetit të dorëzimit.Kjo kategori e gjerë mund të përfshijë faza të ndryshme transporti.
Në dalje për dorëzimPaketa raportohet në një itinerar dorëzimi.Mos e shndërroni këtë në garanci të pakushtëzuar dorëzimi.
Në pritje të marrjesPranuesi pritet ta marrë paketën.Përfshini udhëzimet ose afatet e marrjes vetëm kur mbështeten nga burimi.
E dorëzuarBurimi i gjurmimit raporton dorëzimin.Një skanim dorëzimi, më vete, nuk zgjidh pretendimin e klientit se nuk e ka marrë paketën.
PërjashtimNjë ngjarje mund të kërkojë vëmendje ose të ndërpresë përparimin normal.Ruani arsyen në vend që çdo përjashtim ta trajtoni si humbje.
Kthimi në proces ose i kthyerPaketa po kthehet ose është raportuar përfundimi i kthimit.Mbajeni progresin e kthimit të dalluar nga dorëzimi te pranuesi fillestar.
I panjohurInformacioni i disponueshëm nuk mund të hartëzohet me siguri.Hetoni hartëzimin ose boshllëkun e të dhënave në vend që të shpikni një gjendje dorëzimi.

Këto etiketa janë një model i sugjeruar aplikacioni, jo një listë zyrtare kodesh të 17TRACK. Ruani kodin e statusit të ofruesit, nënstatusin, përshkrimin, kohën e ngjarjes, informacionin e zonës kohore, vendndodhjen dhe kohën e marrjes kur janë të disponueshme. Ruani gjithashtu versionin e hartëzimit në mënyrë që ndryshimet e mëvonshme të mund të auditohen.

Për një zbatim me shumë transportues, 17TRACK Tracking API është një mundësi e përshtatshme integrimi. Përdorni dokumentacionin zyrtar të API-së për të përcaktuar kontratën e zbatimit, në vend që të kopjoni etiketat ilustruese në fushat specifike të ofruesit. Konfirmoni përkufizimet e zbatueshme të statusit, konfigurimin e webhook-eve, kërkesat e autentikimit dhe semantikën e përgjigjeve përpara se të ndërtoni përshtatësin.

Ndërtoni trajtimin e webhook-eve rreth marrjes së qëndrueshme

Webhook-u është një kërkesë HTTP e dërguar në pikën tuaj fundore për të raportuar një ngjarje. Ai mund të zvogëlojë nevojën për kërkesa të përsëritura, por nuk duhet trajtuar si garanci për dorëzim të menjëhershëm, të renditur ose saktësisht një herë. Hartoni marrësin që të tolerojë riprovime, ndërprerje dhe ngarkesa të papritura, përveçse kur ofruesi garanton shprehimisht të kundërtën.

  1. Autentifikoni kërkesën. Zbatoni metodën e verifikimit të dokumentuar nga ofruesi. Nëse mbështeten nënshkrimet, vërtetojini duke përdorur algoritmin e specifikuar dhe bajtet e papërpunuara të kërkesës. Mos shpikni një kokë nënshkrimi dhe mos supozoni se çdo shërbim përdor HMAC.
  2. Vërtetoni ngarkesën. Kontrolloni fushat e kërkuara, llojet, madhësinë e ngarkesës dhe lidhjen me një dërgesë që menaxhohet nga llogaria juaj. Trajtoni fushat opsionale të panjohura pa prishur panevojshëm përputhshmërinë e ardhshme.
  3. Ruajeni përpara se të konfirmoni marrjen. Ruajeni ngjarjen e pranuar ose vendoseni në një radhë të qëndrueshme përpara se të dërgoni përgjigjen e dokumentuar të suksesit. Nëse ruajtja dështon, mos e konfirmoni ngjarjen si të marrë në mënyrë të sigurt.
  4. Përpunojeni në mënyrë asinkrone. Kryeni hartëzimin e statusit, përditësimet e porosive dhe vendimet për njoftimet jashtë trajtuesit të kërkesës kur është praktike.
  5. Bëjini efektet anësore idempotente. Një ngjarje e përsëritur nuk duhet të krijojë një tjetër biletë mbështetjeje ose të dërgojë një kopje tjetër të së njëjtës mesazh për klientin.

Kodi i saktë i konfirmimit, afati i pritjes, orari i riprovimeve dhe sjellja e riluajtjes varen nga ofruesi. Kontrollojini këto detaje në mënyrë të qartë. Një udhëzim i përgjithshëm për “kthimin e 200” nuk zëvendëson kontratën e webhook-ut.

Përdorni HTTPS dhe mbajini kredencialet jashtë URL-ve dhe regjistrave rutinë. Zbatoni kontrolle aksesi për ngarkesat e ruajtura, sepse të dhënat e gjurmimit mund të përmbajnë informacion personal. OWASP REST Security Cheat Sheet ofron udhëzime përkatëse mbi mbrojtjen e transportit, vërtetimin e hyrjeve dhe sigurinë e pikave fundore.

Dedublikoni ngjarjet pa shtypur përditësimet reale

Preferoni një identifikues të dokumentuar dhe të qëndrueshëm të ngjarjes kur është i disponueshëm. Përndryshe, nxirrni një çelës dedublikimi nga një kombinim i zgjedhur me kujdes i identitetit të dërgesës, vulës kohore të ngjarjes, kodit të ngjarjes dhe vendndodhjes. Testojeni këtë qasje me ngarkesa reale: dy ngjarje legjitime mund të kenë të njëjtën vulë kohore dhe e njëjta ngjarje mund të mbërrijë me tekst përshkrues paksa të ndryshëm.

Përdorni kontrolle të veçanta dedublikimi për marrjen e ngjarjeve dhe veprimet pasuese. Një përditësim statusi mund të duhet të ruhet sërish si korrigjim, ndërsa njoftimi për klientin duhet të mbetet i shtypur. Jepini çdo njoftimi ose veprimi të biletës identitetin e vet të qëndrueshëm.

Mbajeni të ndarë kohën e ngjarjes nga koha e marrjes

Supozojmë se një ngjarje “në transport” arrin në sistemin tuaj pas një ngjarjeje “në dalje për dorëzim”, por vula e saj kohore nga transportuesi është më e hershme. Ruajeni në historik pa e ndryshuar automatikisht statusin aktual në “në transport”.

Renditja vetëm sipas vulës kohore nuk mjafton për çdo rast. Zonat kohore që mungojnë, skanimet e korrigjuara dhe burimet kontradiktore kërkojnë rregulla të qarta. Ruani saktësinë dhe zhvendosjet e vulës kohore, regjistroni kur sistemi juaj mori çdo ngjarje dhe përdorni informacionin e dokumentuar të sekuencës së ofruesit kur është i disponueshëm. Mos vendosni një shkallë të ngurtë statusesh vetëm përpara: përpjekjet e dorëzimit, ridrejtimet, kthimet dhe korrigjimet mund të krijojnë kalime legjitime që duken sikur lëvizin prapa.

Shndërroni përjashtimet në veprime me përgjegjës

Një sinjalizim për përjashtim duhet të shpjegojë çfarë ndodhi, çfarë veprimi nevojitet dhe kush është përgjegjës për hapin e ardhshëm. Një mesazh i përgjithshëm “përjashtim dërgese” i lë punonjësit e operacioneve të përsërisin të njëjtin hetim dhe mund të alarmojë klientët pa i ndihmuar.

Filloni me një politikë të vogël drejtimi:

  • Problem me adresën ose aksesin: Drejtojeni te mbështetja e klientit për të verifikuar problemin dhe për të kontrolluar procesin e korrigjimit të disponueshëm nga transportuesi. Mos premtoni ndryshim adrese përpara se të konfirmoni se është i mundur.
  • Kërkohet marrja: Njoftoni pranuesin kur burimi ofron udhëzime të përdorshme për marrjen. Ruani çdo afat të verifikuar.
  • Kërkohet veprim doganor: Caktojeni rastin sipas personit që duhet të sigurojë dokumentet ose informacionin e kërkuar. Një ngjarje doganore, më vete, nuk përcakton se duhet kryer pagesë.
  • Përpjekje e pasuksesshme dorëzimi: Kontrolloni hapin tjetër të raportuar përpara se të këshilloni ridorëzimin ose marrjen.
  • Kthim te dërguesi: Hapni një rishikim operacional. Mos lëshoni automatikisht rimbursim vetëm nga një etiketë e përgjithshme gjurmimi, përveçse kur politika juaj e autorizon shprehimisht.
  • Humbje ose dëmtim i raportuar nga transportuesi: Drejtojeni te përgjegjësi i dëmeve dhe ruani provat e ngjarjes. Mbajini vendimet e dëmeve të ndara nga zbulimi i përgjithshëm i vonesave.

Çdo sinjalizim duhet të përmbajë identifikuesin e dërgesës, referencën e porosisë, arsyen e ngjarjes, vulën kohore të burimit, gjendjen më të fundit të njohur, përgjegjësin e caktuar dhe veprimin e ardhshëm. Përfshini një lidhje drejt regjistrimit përkatës të brendshëm në vend që të ekspozoni detaje të panevojshme të klientit në kanalet e përbashkëta të mesazheve.

Trajtojeni “pa përditësim” si kusht të veçantë

Një dërgesë pa skanim të fundit nuk ka humbur automatikisht. Ajo mund të jetë midis pikave të kontrollit, në pritje të skanimit të parë fizik ose e prekur nga një boshllëk dukshmërie.

Përcaktoni pragjet e pasivitetit sipas shërbimit, itinerarit, fazës së transportit dhe angazhimit të biznesit, në vend që të aplikoni një kohëmatës universal. Dalloni një paketë që nuk ka marrë kurrë skanim pranimi nga një paketë që ndaloi përditësimin pas hyrjes në rrjet. Nëse provat historike janë të kufizuara, përdoreni pragun për të nisur hetimin, jo për të deklaruar humbjen.

Shtypni sinjalizimet e përsëritura ndërsa një rast i pandryshuar mbetet i hapur. Përshkallëzojeni kur shfaqen prova të reja, kur humbet një ndjekje e dakordësuar ose kur angazhimi i dorëzimit ndaj klientit kërkon ndërhyrje.

Monitoroni shëndetin e integrimit veçmas nga performanca e dorëzimit

Monitorimi i API-së përgjigjet nëse integrimi juaj i gjurmimit funksionon. Monitorimi i dorëzimit përgjigjet se çfarë po ndodh me dërgesat. Një pikë fundore e shëndetshme mund të marrë të dhëna të vjetruara nga transportuesi, ndërsa një pikë fundore e padisponueshme mund të humbasë përditësime për paketa që lëvizin normalisht.

  • Shëndeti i kërkesave: Ndiqni dështimet e autentikimit, afatet e pritjes, përgjigjet për kufizimin e shpejtësisë, gabimet e serverit dhe refuzimet në nivel aplikacioni.
  • Shëndeti i webhook-eve: Ndiqni dështimet e verifikimit, vonesën e konfirmimit, dështimet e ruajtjes, dërgesat e dyfishta dhe gabimet e përpunimit.
  • Shëndeti i përpunimit: Monitoroni moshën e radhës, ngjarjet e papërpunuara, dështimet e hartëzimit dhe dështimet e njoftimeve.
  • Freskia e gjurmimit: Matni kohën nga ngjarja e fundit e burimit veçmas nga koha që nga marrja e fundit e suksesshme nga sistemi juaj.
  • Rezultatet operacionale: Ndiqni përjashtimet e pazgjidhura, kohën deri te caktimi i përgjegjësit dhe ndjekjet e vonuara.

Për riprovimet e kërkesave, ndiqni udhëzimet e ofruesit për kufizimin e shpejtësisë dhe riprovimet. Shmangni përsëritjen e verbër të operacioneve që mund të krijojnë regjistrime të dyfishta ose efekte të tjera anësore; përdorni mekanizma të dokumentuar idempotence kur janë të disponueshëm.

Kur mbështetet, përdorni një proces pajtimi për të marrë regjistrimin më të fundit të gjurmimit pas ndërprerjeve ose ngjarjeve të dyshuara të humbura. Përcaktoni frekuencën e tij brenda kufijve kontraktualë dhe të shpejtësisë. Webhook-et dhe pajtimi shërbejnë për qëllime të ndryshme: i pari dorëzon ndryshimet, ndërsa i dyti ndihmon në zbulimin dhe riparimin e boshllëqeve.

Testoni rastet e dështimit përpara se të aktivizoni njoftimet për klientët

Filloni me përpunim vetëm për përdorim të brendshëm dhe shqyrtoni dërgesa përfaqësuese përpara se të lejoni që ndryshimet e statusit të dërgojnë mesazhe te klientët. Testoni më shumë se progresin normal nga “në transport” në “e dorëzuar”.

  • Një webhook i dyfishtë krijon një njoftim të vetëm të synuar për klientin.
  • Një ngjarje më e vjetër që mbërrin me vonesë nuk zëvendëson gabimisht gjendjen aktuale.
  • Një status i panjohur ruhet dhe shënohet, në vend që të hartëzohet në heshtje si “e dorëzuar”.
  • Një shkrim i dështuar i qëndrueshëm nuk prodhon konfirmim të suksesshëm.
  • Një ndërprerje e përkohshme pasuese i lë ngjarjet të disponueshme për riprovim.
  • Një ngjarje dorëzimi e ndjekur nga një korrigjim mbetet e auditueshme.
  • Një porosi me shumë paketa nuk shënohet plotësisht si e dorëzuar kur është dorëzuar vetëm një paketë.
  • Një ndërprerje e API-së sinjalizon inxhinierinë pa u treguar automatikisht klientëve se paketat e tyre janë vonuar.

Kriteri i publikimit duhet të jetë qëndrueshmëria operacionale: regjistrimi i dërgesës, mesazhi i klientit dhe veprimi i mbështetjes duhet të përputhen me të njëjtat prova themelore. Një përgjigje e suksesshme e webhook-ut, më vete, nuk dëshmon se përvoja e dorëzimit po funksionon.

FAQ

A do të thotë HTTP 200 se paketa është dorëzuar?

Jo. Ai tregon sukses në nivelin HTTP për kërkesën. Lexoni veçmas rezultatin e biznesit të API-së dhe fushat e statusit të dërgesës. Për një webhook, një konfirmim i suksesshëm lidhet me marrjen e njoftimit, jo me dorëzimin fizik të paketës.

A duhet të përdor webhook-e apo polling për përditësimet e gjurmimit?

Përdorni webhook-e për përditësime të drejtuara nga ngjarjet kur ofruesi i mbështet. Kur mbështetet dhe justifikohet nga ana operacionale, shtoni polling të kufizuar pajtimi për të rikuperuar boshllëqet. Polling-u i vetëm mund të jetë i përshtatshëm kur webhook-et nuk janë të disponueshme, por frekuenca e tij duhet të respektojë kufijtë e ofruesit dhe kërkesat tuaja për freski.

Pse mund të ndryshojë statusi i gjurmimit pas “e dorëzuar”?

Një burim mund të korrigjojë një ngjarje ose integrimi juaj mund të marrë informacion të vonuar ose kontradiktor. Ruani historikun dhe vlerësoni provat e reja në vend që ta trajtoni statusin “e dorëzuar” si teknikisht të pandryshueshëm. Një dorëzim i raportuar dhe konfirmimi i marrjes nga klienti janë gjithashtu fakte të ndryshme.

Sa shpejt duhet të dërgohet një sinjalizim për përjashtim?

Bazojeni urgjencën në veprimin e kërkuar dhe në çdo afat të verifikuar. Një problem që kërkon veprim nga pranuesi meriton trajtim të ndryshëm nga një vonesë informuese. Shpejtësia e përpunimit nuk mund të kompensojë një ngjarje të transportuesit që është publikuar me vonesë, ndaj ruani si vulat kohore të burimit, ashtu edhe ato të marrjes.

A duhet t’u shohin klientët statusin e papërpunuar të transportuesit?

Zakonisht, klientët përfitojnë më shumë nga një shpjegim i qartë dhe një hap i ardhshëm i mbështetur sesa nga një kod i pashpjeguar. Ruani detajet e papërpunuara për qëllime mbështetjeje dhe auditimi. Mos e thjeshtoni kurrë një status në një premtim më të fortë se ai që mbështet ngjarja themelore.

Burimet

  • RFC 9110: HTTP Semantics — referencë për kuptimet e kodeve të statusit HTTP, përfshirë 200 dhe 202.
  • OWASP REST Security Cheat Sheet — udhëzime sigurie përkatëse për pikat fundore të API-së dhe webhook-eve.
  • 17TRACK Tracking API — referencë zyrtare e produktit për mundësinë e integrimit të gjurmimit të diskutuar.
  • 17TRACK API Documentation — referencë zyrtare për kërkesat specifike të integrimit të ofruesit; skemat ilustruese dhe rekomandimet e rrjedhës së punës në këtë udhëzues nuk zëvendësojnë atë kontratë.
Loading