Gabimet
Një formë e vetme, dy nivele dhe një id kërkese mbi gjithçka.
Zarfi
type është një bashkësi e ngrirë mbi të cilën mund të degëzoni dhe që nuk do të rritet kurrë. code është specifik dhe shtesë, ndaj trajtojeni një kod që nuk e njihni si type-in e tij. requestId është te çdo përgjigje, përfshirë ato të suksesshmet, dhe është ai që lidh një raportim me një rresht regjistri.
{ "error": { "type": "validation_error", "code": "invalid_email_address", "message": "Not a valid email address: ada@", "param": "to.0", "docUrl": "https://openemail.uk/docs/api/errors#invalid_email_address", "requestId": "req_e103790543af4…" }}param është me pika dhe me indeks, kështu që tregon pikërisht elementin (to.0, attachments.2.filename) e jo fushën që e përmban.
Kodet e statusit
| Statusi | type | Kode të zakonshme |
|---|---|---|
| 400 | invalid_request_error | malformed_json, invalid_idempotency_key |
| 401 | authentication_error | missing_api_key, invalid_api_key, revoked_api_key, invalid_credential_type |
| 403 | permission_error | insufficient_scope, from_address_forbidden |
| 404 | not_found_error | resource_not_found |
| 409 | conflict_error | email_not_cancellable, translation_not_configured |
| 422 | validation_error | invalid_email_address, reserved_header, too_many_recipients, unknown_parameter, idempotency_key_reuse, label_not_directly_settable, unknown_language, translation_too_long |
| 429 | rate_limit_error | send_quota_exceeded, too_many_inboxes |
| 500 | api_error | internal_error |
| 503 | api_error | translation_failed |
Një 404 nuk e dallon kurrë «nuk ekziston» nga «i përket një hapësire tjetër pune». Kjo është e qëllimshme: vetë dallimi është informacion.
Një 429 nuk mbart kurrë Retry-After, ndaj zgjidhni vetë sa të prisni. send_quota_exceeded është kuota mujore e dërgimeve dhe rivendoset më një të muajit, ndaj tregojani një personi në vend që të bëni prapavijë. too_many_inboxes është kufiri i krijimit të kutive postare të përkohshme, dhe zgjatja e një kutie që e keni tashmë nuk kushton asgjë ndaj tij.
500 dhe 503 ndajnë të njëjtin type dhe do të thonë gjëra të ndryshme për një thirrës. Një 503 është një varësi që nuk u përgjigj (sot ky është përkthyesi), dhe kërkesa ia vlen të riprovohet e pandryshuar; një 500 është yni dhe ia vlen të raportohet me requestId-në e vet.
Si t’i trajtoni
Degëzoni sipas type për sjelljen dhe lexoni code për mesazhin që i shfaqni një njeriu. Një code i panjohur nuk është gabim në klientin tuaj. Do të thotë se e kemi emërtuar një dështim më saktë se më parë.
const res = await fetch(`${BASE}/emails`, { method: 'POST', headers, body }); if (!res.ok) { const { error } = await res.json(); switch (error.type) { case 'rate_limit_error': throw new RateLimited(error.code); case 'validation_error': // error.param points at the offending field throw new BadRequest(`${error.param}: ${error.message}`); case 'authentication_error': // revoked_api_key and expired_api_key are worth telling an operator apart throw new AuthFailed(error.code); default: // quote requestId when you report it throw new Unexpected(error.message, error.requestId); }}