TypeScript SDK

从 TypeScript 驱动您的托管

@zinn-digital/sdk 是适用于 Zinn Digital® API 的完全类型化客户端。每个路径、参数和响应均由构建该 API 所用的同一 OpenAPI 规范生成,因此您的编辑器能够了解整个 API,任何拼写错误都将成为编译错误。

所有开发者文档 →

安装

该软件包位于 npm 的 @zinn-digital 作用域下。它可以在任何具有 fetch 的 JavaScript 运行时中运行。

npm install @zinn-digital/sdk

快速入门

列出无需密钥的公共托管区域,然后使用密钥列出您自己的站点。

import { createApiClient } from "@zinn-digital/sdk";

const api = createApiClient({ baseUrl: "https://api.zinndigital.com" });

// Public catalogue endpoints need no key.
const { data: regions } = await api.GET("/v1/catalog/regions");
console.log(regions?.data.map((r) => r.slug));

// Everything else uses a per-organisation API key.
api.use({
  onRequest({ request }) {
    request.headers.set("Authorization", `Bearer ${process.env.ZINN_API_KEY}`);
  },
});

const { data, error } = await api.GET("/v1/sites", { params: { query: { limit: 5 } } });
if (error) throw new Error(error.error.message);
for (const site of data.data) console.log(site.name, site.status);

身份验证

公开目录端点(例如区域和计划)无需任何凭据。其他所有请求均使用作为 bearer token 发送的组织专属 API 密钥。密钥仅包含您在创建时授予的权限,且您可以随时将其撤销。请将其保存在环境变量或您的机密存储中,切勿放入源代码中。

在仪表盘中创建 API 密钥

包含内容

完整的公共 API,已定义类型

站点、域名与 DNS、账单、支持以及公共 API 的所有其他领域。响应和错误均已定义类型,且架构类型已导出供您自己的代码使用。

自动生成,非手动编写

该客户端是基于从我们的 OpenAPI 规范生成的类型之上的 openapi-fetch。每当规范发生变更时,新版本都会自动发布,因此无需任何人编写封装,新的端点即可进入 SDK。

小巧且低依赖

单个运行时依赖项与原生 fetch。它可在 Node.js、浏览器以及边缘运行时中运行,并采用 MIT 许可证。

一直输入到底

读取域名的 DNS 记录,并根据规范定义的记录类型对其进行筛选。

import type { components } from "@zinn-digital/sdk";

type DnsRecord = components["schemas"]["DnsRecord"];

// Paths, parameters and responses are all typed from the OpenAPI spec:
// a misspelt query parameter is a compile error, not a silent no-op.
const { data: records } = await api.GET("/v1/domains/{domainId}/dns/records", {
  params: { path: { domainId: "YOUR_DOMAIN_ID" } },
});
const txt: DnsRecord[] = (records?.data ?? []).filter((r) => r.type === "TXT");
for (const record of txt) console.log(record.name, record.value);

问题

你们有 TypeScript 或 JavaScript SDK 吗?

是的。从 npm 安装 @zinn-digital/sdk。它是一个完全类型化的客户端,基于我们的 OpenAPI 规范生成,涵盖了整个公共 API。

我该如何进行身份验证?

在仪表板的“API 密钥”页面上创建 API 密钥,并将其作为 Bearer 令牌在 Authorization 标头中发送。公开目录端点无需密钥。

SDK 如何保持最新状态?

它是根据构建 API 所用的同一个 OpenAPI 规范生成的,并且只要该规范发生更改,就会自动发布新版本。

探索每个端点

SDK 可以调用的每个操作都在 API 参考中进行了说明,并包含其参数、响应和权限。

API 参考