Pāriet uz dokumentāciju
SDK

Kļūdas

Katra kļūme met izņēmumu. Divas klases un pieprasījuma id uz katras API kļūdas.

Kā to noķert

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}

permission_error sūtīšanas laikā parasti ir ATSLĒGAS sūtīšanas tvērums — domēns vai adrese, kas tai nav dota, nevis darbvieta; tāpēc paraugs izdrukā to, ko addresses.list() saka par to, kā šī atslēga drīkst sūtīt.

Klases

KlaseKad
`OpenEmailApiError`API atbildēja, un ne ar veiksmi. Nes status, type, code, param, docUrl, requestId un retryAfterSeconds.
`OpenEmailNetworkError`Atbilde nepienāca: DNS, TLS, pārtraukts savienojums, noildze vai tavs paša AbortSignal. Nes cause, un isTimeout ir true, ja iemesls bija noildze.
`Error`Tiek mests, pirms kaut kas ir nosūtīts: trūkstoša vai nepareizi veidota atslēga, nelietojams baseUrl, pārlūks, tukšs id.
GetterPatiess, kad
`isAuth`type ir authentication_error, 401: nav atslēgas, nepareiza veida akreditācijas dati vai atslēga, ko neesam izdevuši.
`isPermission`permission_error, 403: īsta atslēga bez vajadzīgā tvēruma vai From adreses.
`isScopeMissing`code ir insufficient_scope — 403, kas nosauc trūkstošo tvērumu.
`isInvalidRequest`invalid_request_error, 400: pieprasījums, ko nevarēja saprast. Ziņojums, kas pārsniedz izmēra griestus, atnāk kā 422 message_too_large, tāpēc to noķer getters isValidation.
`isValidation`validation_error, 422: shēma to noraidīja, un param nosauc lauku.
`isNotFound`not_found_error, 404: tāda resursa nav.
`isConflict`conflict_error, 409: resurss ir pārkāpis punktu, kurā ar to vēl varēja to izdarīt.
`isRateLimited`rate_limit_error, 429. retryAfterSeconds satur gaidīšanas laiku, ja serveris to nosauca.
`isServerError`status ir 500 vai vairāk. Sazinoties ar atbalstu, norādi requestId.
`isRetryable`status ir 408, 429, 500, 502, 503 vai 504.

Getteri lasa type — aploksnes iesaldēto pusi. code paliek string, jo API garantē, ka tas ir atvērts un papildināms, tāpēc neatpazītu kodu uztver kā tā type. Slēgts apvienojums padarītu SDK atjauninājumu par cenu, kas jāmaksā, lai izlasītu jaunu kļūmes veidu.

Ķermenis, kas nav API kļūdas aploksne, tik un tā kļūst par OpenEmailApiError, kur type tiek izsecināts no statusa un code ir unrecognised_response. Arī veiksmīga atbilde, kuras ķermenis nav JSON, met tādu pašu.

Arī pārtraukšana ir OpenEmailNetworkError — vienalga, vai tā notiek pieprasījuma laikā vai gaidot pirms atkārtojuma —, un pati pārtraukšana tiek saglabāta uz cause. Pārbaudi signal.aborted, kad tev jāatšķir paša atcelšana no tīkla kļūmes.

requestId

Katrs OpenEmailApiError nes pieprasījuma id, ko nosūtīja serveris — no kļūdas ķermeņa vai x-request-id galvenes —, un tas ir vienīgais, kas sasaista tavu kļūmi ar rindu servera žurnālā. Veiksmīga atbilde atrisinās tikai par parsēto ķermeni, tāpēc tajā nav pieprasījuma id, ko nolasīt.