JavaScript SDK:函数
aura.functions的每个方法、它的签名、它需要的角色以及它返回的内容。
1. 获取客户
aura.functions 是 FunctionsService。您几乎从不自己构建它。
包 @aurabase/functions 与 @aurabase/aurabase-js一起安装。仅当您从 @aurabase/core编写自己的客户端时才单独安装它。它需要 Node.js 20 或更高版本,并附带带有类型声明的 ES 模块和 CommonJS。
每个方法都会返回 Promise<AuraResponse<T>>,一个永远不会抛出异常的对象 { data, error } :
| 案例 | data | error |
|---|---|---|
| 成功 | 价值 | null |
| 无内容的成功(204,空体) | null | null |
| 失败 | null | 一个 AuraError |
当您需要该值时,测试 data 而不是 error :只有这样 TypeScript 才知道它不是 null。
| 方法 | 需要的角色 |
|---|---|
invoke | 公钥 (anon)、用户或 service_role |
| 所有其他方法 | service_role(仅限服务器) |
2. 调用
| 选项 | 默认 | |
|---|---|---|
body | 无 | JSON 可序列化。 Blob、 ArrayBuffer、类型化数组、 FormData、 URLSearchParams 或 ReadableStream 返回错误 invalid_body ,无需任何请求。 |
method | 'POST' | 函数看到的方法 |
path | '/' | 函数看到的路径 |
headers | 无 | 赋予函数的标头。 authorization、 apikey、 x-request-id 和 x-aura-* 被平台丢弃。 |
timeout | 客户端默认,30秒 | 毫秒。取消呼叫并返回代码 timeout。 |
signal | 无 | 您自己的 AbortSignal。取消的调用返回代码 timeout。 |
responseType | 'json' | data 如何解码:解析值、字符串、Blob 或 ArrayBuffer |
name 在 URL 中进行编码,因此包含 /、 ? 或 # 的值不能离开其位置。根本找不到包含此类字符的名称。
invoke 首先刷新过期的用户会话,当有用户会话时发送用户的 JWT,并且从不重试呼叫。
3. 列出并获取
两者都需要 service_role 密钥。 get 接受 名称 或 id;如果函数的名称类似于 id,则名称优先。 FunctionDef 包含函数的源代码和变量,这就是公钥接收 403的原因。
4. 工作机会
- 当
functionName为空或仅有空格时,enqueueJob返回{ code: 'bad_request', status: 400 },无需任何请求,否则修剪名称。 listJobs对status(pending、running、completed、failed、dead)进行过滤,并返回 1 到 500 个作业,默认情况下为 50 个。- 重试死作业没有方法:请参阅 死信队列。
5. 计划任务
schedule 有 5 或 6 个字段,采用 UTC。 deleteCronJob 采用 名称,并针对未知名称返回 404 。没有 getCronJob 或 updateCronJob。
6. 类型和错误
由 @aurabase/aurabase-js 和 @aurabase/functions导出:
| 出口 | 它是什么 |
|---|---|
FunctionsHttpError | 您的函数(或管理路由)回答了错误。 error.context 保存它返回的主体。 |
FunctionsRelayError | 平台失败:网关或运行时生成的网络 (status 0) 或 502、 503、 504 。 |
isRelayStatus(status) | true 代表 0、 502、 503、 504。 |
FunctionsResponseType | `'json' \ |
两个错误类都扩展 AuraError,因此 isAuraError(error) 为 true。 AuraError 具有 status、 code、 message、 details、 retryAfter和吸气剂 isNotFound、 isUnauthorized、 isForbidden 和 isRateLimited。
数据类型,由 @aurabase/aurabase-js导出:
| 类型 | 领域 |
|---|---|
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? } |
当函数返回 JSON 对象时, data 还带有两个不可枚举属性 body 和 status,为针对旧版本编写的代码保留。不要在新代码中依赖它们。