JavaScript SDK: functies
Elke methode van aura.functions, de handtekening ervan, de rol die deze nodig heeft en wat deze retourneert.
1. Haal de klant op
aura.functions is een FunctionsService. Je bouwt het bijna nooit zelf.
Het pakket @aurabase/functions wordt geïnstalleerd met @aurabase/aurabase-js. Installeer het alleen alleen als u uw eigen client samenstelt vanuit @aurabase/core. Het vereist Node.js 20 of hoger en levert ES-modules en CommonJS met typeverklaringen.
Elke methode retourneert Promise<AuraResponse<T>>, een object { data, error } dat nooit gooit:
| Geval | data | error |
|---|---|---|
| Succes | de waarde | null |
| Succes zonder inhoud (204, lege tekst) | null | null |
| Mislukking | null | een AuraError |
Test data in plaats van error wanneer u de waarde nodig heeft: alleen dan weet TypeScript dat het niet null is.
| Methode | Rol nodig |
|---|---|
invoke | openbare sleutel (anon), gebruiker of service_role |
| elke andere methode | service_role (alleen server) |
2. aanroepen
| Optie | Standaard | |
|---|---|---|
body | geen | JSON-serialiseerbaar. Een Blob, ArrayBuffer, getypte array, FormData, URLSearchParams of ReadableStream retourneert de fout invalid_body zonder enig verzoek. |
method | 'POST' | De methode die de functie ziet |
path | '/' | Het pad dat de functie ziet |
headers | geen | Headers die aan de functie zijn gegeven. authorization, apikey, x-request-id en x-aura-* worden door het platform verwijderd. |
timeout | standaard client, 30 s | Milliseconden. Annuleert de oproep en retourneert de code timeout. |
signal | geen | Je eigen AbortSignal. Een geannuleerde oproep retourneert de code timeout. |
responseType | 'json' | Hoe data wordt gedecodeerd: een geparseerde waarde, een string, een Blob of een ArrayBuffer |
name is gecodeerd in de URL, dus een waarde die /, ? of # bevat, kan zijn positie niet verlaten. Een naam die dergelijke tekens bevat, wordt eenvoudigweg niet gevonden.
invoke vernieuwt eerst een verlopen gebruikerssessie, verzendt de JWT van de gebruiker wanneer die er is, en probeert nooit opnieuw te bellen.
Zo gebruikt u het: Roep een functie op. Hoe het mislukt: Fouten, time-outs en nieuwe pogingen.
3. lijst en ontvang
Beide hebben een service_role-sleutel nodig. get accepteert de naam of de id; als een functie een naam heeft als een id, wint de naam. Een FunctionDef bevat de broncode en de variabelen van de functie, daarom ontvangt een publieke sleutel 403.
Er is geen methode om een functie te implementeren, bij te werken of te verwijderen, of om geheimen te schrijven: gebruik de HTTP API of de CLI.
4. Banen
enqueueJobretourneert{ code: 'bad_request', status: 400 }zonder enig verzoek wanneerfunctionNameleeg is of alleen spaties bevat, en anders wordt de naam ingekort.listJobsfiltert opstatus(pending,running,completed,failed,dead) en retourneert tussen 1 en 500 taken, standaard 50.- Het opnieuw proberen van dode opdrachten heeft geen methode: zie de wachtrij voor dode letters.
5. Kron
schedule heeft 5 of 6 velden, in UTC. deleteCronJob neemt de naam en retourneert 404 voor een onbekende naam. Er is geen getCronJob of updateCronJob.
6. Typen en fouten
Geëxporteerd door @aurabase/aurabase-js en @aurabase/functions:
| Exporteren | Wat het is |
|---|---|
FunctionsHttpError | Uw functie (of een beheerroute) heeft geantwoord met een fout. error.context houdt het lichaam vast dat het heeft teruggestuurd. |
FunctionsRelayError | Het platform is mislukt: netwerk (status 0) of 502, 503, 504 geproduceerd door de gateway of de runtime. |
isRelayStatus(status) | true voor 0, 502, 503, 504. |
FunctionsResponseType | `'json' \ |
Beide foutklassen breiden AuraError uit, dus isAuraError(error) is waar. AuraError heeft status, code, message, details, retryAfter en de getters isNotFound, isUnauthorized, isForbidden en isRateLimited.
Gegevenstypen, geëxporteerd door @aurabase/aurabase-js:
| Typ | Velden |
|---|---|
FunctionDef | id, project_id, name, runtime, code, code_hash, env_vars, permissions, is_active, created_at, updated_at |
FunctionPermissions | allow_net: string[], memory_mb: number, timeout_secs: number |
Job | id, project_id, function_name, status, payload, attempts, max_attempts, error?, scheduled_at, started_at?, created_at, completed_at? |
CronJob | id, project_id, name, schedule, function_name, payload, is_active, last_run?, next_run?, created_at |
AuraResponse<T> | { data, error, meta? } |
Wanneer een functie een JSON-object retourneert, heeft data ook twee niet-opsombare eigenschappen, body en status, die worden bewaard voor code die tegen oudere versies is geschreven. Vertrouw er niet op in nieuwe code.