@ formbricks/ hub (英语)
用于此程序的官方类型脚本客户端 窗砖枢纽 API——反馈-记录存储,搜索,丰富和网游.
npm install @formbricks/hub
在Node.js上,22岁或更晚. 客户端是建立在标准上 fetch,所以它也运行在浏览器和 Bun. 尚未支持Deno:生成的客户端通过 client 选项通到 new Request()德诺拒绝.
使用量
import { createHubClient, listFeedbackRecords } from "@formbricks/hub";
const client = createHubClient({
apiKey: process.env.HUB_API_KEY!,
baseUrl: "https://app.formbricks.com", // or your self-hosted Hub
});
const { data } = await listFeedbackRecords({
client,
query: {
tenant_id: "org-123",
source_type: ["survey", "review"],
sentiment: ["negative", "very_negative"],
limit: 50,
},
});
baseUrl 需要而不是默认:Hub是可自我托管的,所以没有单一的正确来源.
每个操作都是独立的功能,因此捆绑者可以摇动你所不叫的树. 如果您需要截取器或额外信头, 请直接使用生成的客户端 createHubFetch() 保留如下内容:
import { createClient, createConfig, createHubFetch } from "@formbricks/hub";
const client = createClient(
createConfig({ baseUrl, auth: () => apiKey, fetch: createHubFetch() }),
);
呼叫回来 { data, error, response } 而不是丢入错误状态; 通过 throwOnError: true 来抛出解析出的错误正文。 网络故障和超时返回 error 同样的方式.
检索和超时
请求被重审并默认超时:最多 2次复试, (中文(简体) ), 每次尝试60秒和服务器的 Retry-After 很荣幸 只有在不能两次适用时才再次发出请求——一个例外,见下表:
| 复试 | 打开 |
|---|---|
| 任何请求 | 429页:1 408 或者说 503 与 Retry-After页:1 409 谁的问题 code 实值 tenant_write_conflict |
GET, (中文(简体) ), HEAD, (中文(简体) ), OPTIONS, (中文(简体) ), PUT, (中文(简体) ), DELETE (单位:千美元) | 500, (中文(简体) ), 502, (中文(简体) ), 504,任何其他 408 或者说 503、 网络错误、 超时尝试 |
POST 财务报告和审定财务报表 PATCH 在一个 500, (中文(简体) ), 502 或者说 504页:1 408 或者说 503 无 Retry-After,网络出错或超时,因为 Hub 可能已经应用过它们。 代理如特使或Istio 回答 503 当它与枢纽的连接下降和 408 当它闲置的时火, 创建已应用的 Hub 将会以 409 冲突,或——为网钩——两次被创建。 如果你的电话可以安全地重复的话, 重复那些刻意尝试, 比如语义搜索. 其它 4xx 答复既未经过反复审查,也未中止请求,或 Retry-After 请求超过60秒 : 该回复将被返回, 您可以采取行动 .
A 类 DELETE 失去反应后再审过 就能回答 404:第一次尝试已删除。 例外的是房客清洗, DELETE /v1/tenants/{tenant_id}/feedback-records:在之前的一次完成后要求的清洗开始新的运行,所以如果第一次清洗的响应丢失了,而且清理在重试前完成,重试中也会删除摄入之间的反馈. 如果有关系,请打电话 maxRetries: 0 并检查它的进展.
如果你在自己代理的背后运行Hub, 不要让它变成上游错误 503 与 Retry-After 这标志着一个要求 赫伯特从来没有见过,所以 POSTs 将重新批准.
const client = createHubClient({
apiKey,
baseUrl,
maxRetries: 4, // 0 turns retries off
timeout: 10_000, // per attempt, in ms; 0 turns it off
});
暂停时间涵盖每次尝试,直到其身体被读取为止,所以一个让中体无法挂接的响应;设置 timeout: 0 为了长生不老的溪流 对于 GET, (中文(简体) ), OPTIONS, (中文(简体) ), PUT 财务报告和审定财务报表 DELETE,虽然重试仍然是可能的,但JSON的身体在尝试中被读取,所以一个滴出或被拖住的中回应像其他失败一样被重试. 重试后的反应体被丢弃,除了 409',其中最多64KB读取为: code。超时对每次尝试分别适用;将整个呼叫绑定,通过 a signal,比如说. AbortSignal.timeout(30_000)。 。 。 .
归宿是客户的 fetchA级 fetch 每个呼叫都通过,或稍后设置 client.setConfig({ fetch }),替换它们,除非它是一个 createHubFetch() 自己来.
运行时间验证
每一个请求和响应形状的 Zod schemas — 带有光谱本身 minLength, (中文(简体) ), maxLength, (中文(简体) ), pattern 和 enum 制约 —— 从一个单独的切入点可以得到, 因此导入客户端本身没有依赖性 :
import { zFeedbackRecordData } from "@formbricks/hub/schemas";
zod 是可选的对等依赖;只有在使用此切入点时才会安装.
重复查询参数
串行过滤器作为重复参数发送( I)?source_type=survey&source_type=review),这是Hub所期望的——它不分割逗号分隔的值. 通过数组,客户端做正确的事情.
此软件包是如何构建的
它产生于 openapi.yaml 在枢纽存储器中 @hey-api/openapi-ts,并从该存储库发表在每份稳定的Hub发布中 npm 来源它的版本是Hub发行的: @formbricks/[email protected] 是Hub0.14.0的客户端,所以将SDK钉入你运行的Hub版本. 生成的源头没有承诺 src/,而出处的证明名称 确切的承诺来自, 所以你可以再生和比较.
要报告问题或请求更改API表面,请在 窗体砖/圆块。 。 。 .
许可证
阿帕奇 - 2.0