Konfigurācija
Trīs veidi, kā izveidot klientu, visas opcijas un tas, ko klients atsaka, pirms pieprasījums ir nosūtīts.
Opcijas
import OpenEmail, { createOpenEmail, init, openemail } from '@openemail/sdk' init({ apiKey: process.env.OPENEMAIL_API_KEY })await openemail.me.ping() export const billing = createOpenEmail({ apiKey: process.env.BILLING_API_KEY! }) const pinned = new OpenEmail({ apiKey: 'oe_live_…', baseUrl: 'https://api.openemail.uk' }) const quick = new OpenEmail('oe_live_…')| Ieejas punkts | Ko tas dod |
|---|---|
| `init(options)` | Konfigurē koplietoto klientu un atgriež to. No tā brīža openemail ir šis klients katrā modulī, un viss, ko izlaidāt, tiek nolasīts no vides. |
| `openemail` | Koplietotais klients. Ja to izmanto pirms init, tas pirmajā izsaukumā izveido sevi no OPENEMAIL_API_KEY un OPENEMAIL_BASE_URL. |
| `createOpenEmail(options)` | Atsevišķs klients ar tādu pašu vides rezerves variantu — otrai atslēgai līdzās koplietotajai vai lai izveidotu instanci, ko eksportē jūsu paša modulis. createClient ir tā pati funkcija ar nosaukumu, kādu lieto envless SDK. |
| `new OpenEmail(options)` vai `new OpenEmail(apiKey)` | Atsevišķs klients, izveidots tieši no tā, ko padodat. Tas nelasa vidi, tāpēc apiKey ir obligāts. Tas ir arī noklusējuma eksports. |
init({ apiKey: 'oe_live_…', baseUrl: 'https://api.openemail.uk', timeoutMs: 30_000, maxRetries: 2, fetch: myFetch, headers: {}, userAgent: 'billing-service/1.4', disableUpdateNotice: true,})| Opcija | Noklusējums | Piezīmes |
|---|---|---|
| `apiKey` | OPENEMAIL_API_KEY | init un createOpenEmail to nolasa no vides. Jāsākas ar oe_live_ vai oe_test_. |
| `baseUrl` | https://api.openemail.uk | Vai OPENEMAIL_BASE_URL. Beigu slīpsvītra tiek nogriezta, un init un createOpenEmail kailam resursdatoram priekšā liek https://, bet localhost priekšā — http://. |
| `timeoutMs` | 30000 | Uz vienu mēģinājumu, nevis uz visu izsaukumu. Aptver arī ķermeņa nolasīšanu, ne tikai galvenes. 0 to atslēdz. |
| `maxRetries` | 2 | Papildu mēģinājumi pēc pirmā izsaukumiem, kurus ir droši atkārtot. Iestatāms klientam, nevis katram izsaukumam. |
| `fetch` | globālais | Sasaistīts jūsu vietā. Padodiet savu starpniekserverim, Worker saistījumam vai testa aizstājējam. |
| `headers` | {} | Sūtīts katrā pieprasījumā. |
| `userAgent` | openemail-sdk/<version> | Sūtīts no katra izpildlaika, izņemot pārlūku, kas neļauj to iestatīt. |
| `disableUpdateNotice` | false | Izlaiž reizi procesā veikto pārbaudi, vai npm nav jaunākas versijas. Pārbaude notiek tikai tad, kad izvade iet uz termināli, un to izslēdz arī OPENEMAIL_DISABLE_UPDATE_NOTICE. |
| `dangerouslyAllowBrowser` | false | Ļauj klientam startēt tur, kur pastāv window un document. Paredzēts testu ietvaram, kas tos definē, nevis lapai. |
Ko tas atsaka pirms sūtīšanas
Šie izmet parastu Error no tās rindas, kurā bija nepareizā vērtība, nevis parādās kā mulsinoša kļūme jūsu pirmajā sūtījumā. Ziņojums pasaka, kas bija nepareizi un kas jāpadod tā vietā.
| Atteikts | Kāpēc |
|---|---|
| Vispār nav atslēgas | Nav iestatīts ne apiKey, ne OPENEMAIL_API_KEY, tāpēc nav nekā, ar ko autentificēties. |
| Sesijas sīkdatne vai sesijas marķieris | Šeit autentificē tikai oe_live_ un oe_test_, un API to saka arī. Pārbaude ir tikai prefikss un nekas vairāk, tāpēc atsaukta atslēga joprojām izgāzīsies tikai tīklā. |
| `baseUrl`, kas nav http vai https URL | Neko citu nevar ielādēt, un nevalidēts URL vēlāk izgāztos kā neapstrādāts TypeError no pavisam citas vietas. |
| Pārlūks | Atslēga būtu nolasāma ikvienam, kas atver izstrādātāja rīkus. Skatiet sadaļu zemāk. |
| Nekur nav `fetch` | Padodiet to kā fetch vai palaidiet uz Node 20+. |
| Tukšs vai tikai no punktiem sastāvošs id jebkurā metodē | Tiek izmests metodes izsaukšanas brīdī. Ceļa segmentu no punktiem noņem katrs URL parsētājs, tāpēc pieprasījums nonāktu citā galapunktā. |
testMode opcijas nav un nebūs. Atslēgas shēma ir daļa no akreditācijas datiem, nevis norāde, tāpēc režīms ir atslēgas īpašība. openemail.mode nolasa prefiksu un neko neizlemj.
Viens klients, vairākas atslēgas
Izveidojiet klientu vienreiz un lietojiet to kopīgi. Jauna instance katram pieprasījumam par velti izmet fetch sasaisti un konfigurāciju, un neviens tās stāvoklis nav piesaistīts konkrētam izsaucējam.
Gadījumam, kas citādi liktu veidot vienu instanci katrai atslēgai, piemēram, darbam, kas sūta vairāku darbvietu vārdā, padodiet apiKey izsaukumā. Tas šim pieprasījumam aizstāj Authorization galveni un klientā neatstāj neko.
await openemail.emails.send(message) await openemail.emails.send(message, { apiKey: workspace.apiKey }) await openemail.threads.list({ folder: 'inbox', apiKey: workspace.apiKey })await openemail.webhooks.list({ apiKey: workspace.apiKey })Katra metode ārpus tempMail to pieņem savā pēdējā argumentā līdzās signal, un sarakstā tas ir tas pats objekts, kurā ir filtri. Tas tiek pārbaudīts pirms pieprasījuma nosūtīšanas pēc tā paša likuma, ko lieto konstruktors, tāpēc drukas kļūda izmet Error, kas nosauc { apiKey } on this call, nevis 401 par akreditācijas datiem, kas pēc tam vēl jāmeklē. Atkārtots izsaukums patur tam doto atslēgu.
signal ir AbortSignal. Tā pārtraukšana aptur pieprasījumu un arī jebkuru aiz tā gaidošu atkārtojumu.
openemail.mode apraksta atslēgu, ar kuru klients tika KONSTRUĒTS, un neseko pārrakstījumam. Tiklīdz viens klients apkalpo vairākas atslēgas, nav viena režīma, ko ziņot, tāpēc nolasiet to no padotās atslēgas.
No pārlūka
Klients atsakās startēt pārlūkā un izmet kļūdu, pirms izsūtīts kāds pieprasījums. Atslēga lapā ir publicēta atslēga: ar to var sūtīt pastu un lasīt pastkasti ikviens, kas atver izstrādātāja rīkus. Izsauciet to no servera, bezservera funkcijas vai skripta.
Vienreizlietojamas iesūtnes ir izņēmums. createTempMail() izveido klientu, kas nenes API atslēgu, tāpēc lapā tas ir drošs. Tas izveido iesūtnes anonīmi, un katrs lasījums sūta marķieri, ko atgrieza create, vai nu katrā izsaukumā kā inboxToken, vai vienreiz kā createTempMail({ inboxToken }).
import { createTempMail } from '@openemail/sdk' const tempMail = createTempMail() const inbox = await tempMail.create()const { items, expiresAt } = await tempMail.listMessages(inbox.id, { inboxToken: inbox.token })Ja tomēr padodat dangerouslyAllowBrowser: true, API cauri savai CORS preflight pārbaudei laiž tieši Content-Type, Authorization un Idempotency-Key, tāpēc papildu galvene headers sarakstā izgāž preflight, nevis pašu pieprasījumu, un tas, ko pārlūks par to ziņo, nepasaka neko noderīgu.