Kalo te dokumentacioni
SDK

Gabimet

Çdo dështim hedh një gabim. Dy klasa, dhe një id kërkese te çdo gabim i API-së.

Si ta kapni një

catch-errors.ts
import { OpenEmailApiError, OpenEmailNetworkError, openemail } from '@openemail/sdk' try {  await openemail.emails.send(message)} catch (error) {  if (error instanceof OpenEmailApiError) {    if (error.isValidation) console.error(error.code, error.param, error.message)    if (error.isPermission) console.error(await openemail.addresses.list())    if (error.isRateLimited) console.error('try again in', error.retryAfterSeconds, 'seconds')     console.error(error.status, error.requestId)  }   if (error instanceof OpenEmailNetworkError && error.isTimeout) console.error('no answer in time')   throw error}

Një permission_error te një dërgim është zakonisht scope-i i dërgimit i ÇELËSIT, një domen ose një adresë që nuk iu dha, dhe jo hapësira e punës, prandaj shembulli shtyp atë që thotë addresses.list() se ky çelës mund të dërgojë.

Klasat

KlasaKur
`OpenEmailApiError`API-ja u përgjigj, dhe jo me sukses. Mban status, type, code, param, docUrl, requestId dhe retryAfterSeconds.
`OpenEmailNetworkError`Nuk mbërriti asnjë përgjigje: DNS, TLS, një lidhje e këputur, afati i skadimit, ose AbortSignal-i juaj. Mban cause, dhe isTimeout është true kur arsyeja ishte skadimi i afatit.
`Error`Hidhet para se të dërgohet asgjë: një çelës që mungon ose i keqformuar, një baseUrl i papërdorshëm, një shfletues, një id bosh.
GetterTrue kur
`isAuth`type është authentication_error, një 401: asnjë çelës, lloji i gabuar i kredencialit, ose një çelës që nuk e kemi lëshuar ne.
`isPermission`permission_error, një 403: një çelës i vërtetë pa scope-in ose pa adresën From që i duhet.
`isScopeMissing`code është insufficient_scope, 403-shi që emërton një scope që mungon.
`isInvalidRequest`invalid_request_error, një 400: një kërkesë që nuk mund të kuptohej. Një mesazh mbi tavanin e madhësisë kthehet si një 422 message_too_large, pra isValidation është getter-i që e kap atë.
`isValidation`validation_error, një 422: skema e refuzoi, dhe param e emërton fushën.
`isNotFound`not_found_error, një 404: nuk ka burim të tillë.
`isConflict`conflict_error, një 409: burimi ka kaluar pikën ku kjo mund t'i bëhej.
`isRateLimited`rate_limit_error, një 429. retryAfterSeconds e mban pritjen kur serveri emërtoi një të tillë.
`isServerError`status është 500 ose më lart. Citoni requestId nëse kontaktoni mbështetjen.
`isRetryable`status është 408, 429, 500, 502, 503 ose 504.

Getter-at lexojnë type, gjysmën e ngrirë të zarfit. code mbetet një string, sepse API-ja garanton se ai është i hapur dhe shtues, prandaj trajtojeni një që nuk e njihni si type-in e tij. Një bashkim i mbyllur do ta bënte përmirësimin e SDK-së çmimin e leximit të një mënyre të re dështimi.

Një trup që nuk është zarfi i gabimit i API-së bëhet gjithsesi një OpenEmailApiError, me type të nxjerrë nga statusi dhe me code të caktuar si unrecognised_response. Edhe një sukses trupi i të cilit nuk është JSON hedh një të tillë.

Një ndërprerje është po ashtu një OpenEmailNetworkError, qoftë kur ndodh gjatë kërkesës, qoftë gjatë pritjes para një riprovimi, dhe ndërprerja ruhet te cause. Kontrolloni signal.aborted kur ju duhet ta dalloni anulimin tuaj nga një dështim rrjeti.

requestId

Çdo OpenEmailApiError mban id-në e kërkesës që dërgoi serveri, nga trupi i gabimit ose nga header-i x-request-id, dhe ajo është e vetmja gjë që e lidh dështimin tuaj me një rresht te log-u i serverit. Një sukses zgjidhet vetëm me trupin e analizuar, pra te një i tillë nuk ka id kërkese për të lexuar.