错误处理
HTTP 状态码是服务器返回的标准化三位数字, 如同请求结果的晴雨表, 用来表明客户端请求的结局. 它们提供关键信息, 说明请求是已成功处理, 需要进一步操作, 还是遇到了错误. 这些状态码分为五大类, 每一类代表一种不同的响应类型.
我们的 API 状态码遵循 HTTP/1.1 协议,这一广受认可的标准可确保通信一致、稳定可靠。借助 HTTP/1.1,我们利用持久连接、增强缓存等特性,优化客户端与服务器之间的交互。
Dynadot API 专为与您的系统无缝集成而设计。它具备可预测的面向资源 URL,支持 JSON 编码请求体,返回 JSON 与 XML 编码响应,并遵循标准 HTTP 方法、身份验证及响应代码。
你可以在测试模式和正式模式下使用 Dynadot API。具体使用哪种模式,取决于你用来验证请求的 API 密钥。测试模式允许你模拟并验证 API 集成,而不会影响线上数据或交易。
Dynadot API 主要专注于 域名管理、订单处理及相关服务。您可以执行注册、转移和续费域名,管理 DNS设置,以及查看或更新账户订单等操作。
温馨提示: 批量创建, 更新, 删除不受支持, 并且每种请求类型均仅限一个对象或操作.
在开始发起任何 API 请求之前,务必先生成您的 API Key 和 API Secret。
这些密钥用于身份验证,也能确保你调用我们 API 时各项操作安全无虞。
你可以通过 账户设置 中的 API 部分同时生成 API Key 和 API Secret。
1. 登录您的 Dynadot 账户.
2. 前往 工具 > API.
3. 在此页面生成您的 API密钥 和 API 密钥.
API 使用标准 HTTP 方法对资源执行操作:
| 方法 | 描述 |
|---|---|
| GET | GET 请求: 获取指定资源的详细信息 |
| POST | POST 请求:创建新资源 |
| PUT | PUT 请求: 完整更新指定的资源 |
| DELETE | DELETE 请求: 删除指定的资源 |
所有 API 请求的基础 URL 为:
https://api.dynadot.com/在构建 API 请求 URL 时,只需包含主版本即可。次版本和补丁更新均设计为向后兼容,不会引入破坏现有代码的变更。这样既能保证稳定性,又能让您无需修改实现,便可受益于渐进式改进和修复。
未来版本发布时,我们会在一段时间内继续兼容旧版本。新功能与重大变更将随主版本号的提升而引入。
API 请求的标头包含请求的元数据。这些元数据为服务器正确处理请求提供了必不可少的上下文。常用的标头包括:
指定请求正文中发送数据的格式。服务器会据此正确解析请求。目前唯一可接受的值是:application/json
让服务器知晓客户端所期望的响应格式。
可能的值: application/json, application/xml
X-Request-ID 请求头是一个 (可选) 请求头,用于唯一标识每个 API 请求。加入此请求头后,有助于跨系统和日志跟踪、关联请求,让调试与监控 API 活动更加轻松。
X-Request-ID 的值必须是有效的 UUID (通用唯一识别码), 遵循以下标准格式: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (例如, 123e4567-e89b-12d3-a456-426614174000).
X-Signature 标头是事务性请求的强制性安全机制, 包括获取敏感信息或更新数据的请求. 它要求客户端使用 HMAC-SHA256 对请求负载进行签名以确保 API 请求的真实性, 完整性, 以及不可否认性.
生成签名时,您需要用到以下各项值
1. API密钥: 您的专属 API 密钥.
2. 完整路径与查询: API 端点的完整路径以及查询参数.
3. X-Request-Id:请求 ID。如果拿不到,可以填一个空字符串。
4. 请求体: 请求正文. 如果它为空或 null, 您可以输入空字符串.
待签名字符串是上述值的组合, 按以下顺序拼接:
apiKey + "\n" + fullPathAndQuery + "\n" + (xRequestId or empty String) + "\n" + (requestBody or empty String)
apiKey = "your_api_key"
fullPathAndQuery = "/restful/v2/some/endpoint?param=value"
xRequestId = "unique-request-id"
requestBody = "{\"key\":\"value\"}"
stringToSign = "your_api_key\n/restful/v2/some/endpoint?param=value\nunique-request-id\n{\"key\":\"value\"}"构建 stringToSign 后, 使用 HMAC-SHA256 并以您的 密钥 作为密钥来计算签名, 然后对结果进行 Base64 编码.
签名按以下步骤生成:
1. 使用 HMAC-SHA256 算法.
2. 使用 stringToSign (UTF-8) 作为输入消息.
3. 将您的 secret (UTF-8) 用作密钥.
4. 将 HMAC 输出编码为 Base64 (标准 Base64)
将生成的 签名 作为请求头中 X-Signature 的值
import base64
import hashlib
import hmac
import uuid
def create_signature(api_key, api_secret, full_path_and_query, x_request_id, request_body=""):
string_to_sign = (
api_key + "\n" +
full_path_and_query + "\n" +
(x_request_id or "") + "\n" +
(request_body or "")
)
digest = hmac.new(
api_secret.encode("utf-8"),
string_to_sign.encode("utf-8"),
hashlib.sha256
).digest()
return base64.b64encode(digest).decode("utf-8")
api_key = "your_api_key"
api_secret = "your_secret"
full_path_and_query = "/restful/v2/accounts/info"
x_request_id = str(uuid.uuid4())
request_body = ""
x_signature = create_signature(
api_key,
api_secret,
full_path_and_query,
x_request_id,
request_body
)
print("X-Request-ID:", x_request_id)
print("X-Signature:", x_signature)API 请求正文用于向服务器发送数据。它通常包含在 POST、PUT 或 PATCH 请求中(通常不用于 GET 或 DELETE 请求)。
正文数据的格式由 Content-Type 标头决定. 常见格式包括:
POST 请求: POST 方法用于在服务器上创建新资源. 请求体通常包含资源详情..
PUT 请求:PUT 方法用于通过完全替换来更新现有资源。请求体包含完整的更新后资源。
DELETE 请求: DELETE 方法用于从服务器上删除已有资源. 它没有请求体.
GET 请求: GET 方法用于从服务器中获取现有资源. 它没有请求体
所有 API 响应均以 JSON 或 XML 格式返回, 正文数据的格式由 Accept 头决定, 提供所请求的数据或错误消息, 如适用.
响应通常包含 3 个部分:Code、Message、Data
代码: 请求的状态
消息: 状态的更多说明
数据: 响应正文
HTTP 状态码是服务器返回的标准化三位数字, 如同请求结果的晴雨表, 用来表明客户端请求的结局. 它们提供关键信息, 说明请求是已成功处理, 需要进一步操作, 还是遇到了错误. 这些状态码分为五大类, 每一类代表一种不同的响应类型.
我们的 API 状态码遵循 HTTP/1.1 协议,这一广受认可的标准可确保通信一致、稳定可靠。借助 HTTP/1.1,我们利用持久连接、增强缓存等特性,优化客户端与服务器之间的交互。
Webhooks 是自动化流程、集成系统的利器。它们让你能实时接收账户或域名设置中事件与变更的通知。配置 Webhook 后,便可根据特定事件触发外部系统操作、更新数据库或发送通知。
Dynadot API 支持各种事件的 webhook 通知,例如 域名注册、转移、续费和 过期时间,以便您能采取相应的应对措施。
要使用 webhook, 你需要提供一个 URL 端点, 用来接收通知. 你可以在 账户设置 中配置 webhook 的 URL, key 和 secret. 当事件发生时, Dynadot 会向指定的 URL 发送带有相关数据的 POST 请求.
Webhook 请求头中包含了关于该请求的元数据,这些元数据为服务器妥善处理请求提供了必不可少的上下文。常用的请求头包括:
指定请求正文中发送数据的格式。服务器会据此正确解析请求。目前唯一可接受的值是:application/json
X-Signature 请求头是事务型请求必备的安全机制,包括获取敏感信息或更新数据的请求。它要求客户端使用 HMAC-SHA256 对请求负载进行签名,从而确保 Webhook 请求的真实性、完整性和不可抵赖性。
生成签名时,您需要用到以下各项值
1. WEBHOOK 密钥: 您的专属 WEBHOOK 密钥.
2. 完整路径与查询:WEBHOOK 端点的完整路径以及查询参数。
3. X-Request-Id:请求 ID。如果拿不到,可以填一个空字符串。
4. 请求体: 请求正文. 如果它为空或 null, 您可以输入空字符串.
待签名字符串是上述值的组合, 按以下顺序拼接:
webhookKey + "\n" + fullPathAndQuery + "\n" + (xRequestId or empty String) + "\n" + (requestBody or empty String)
webhookKey = "your_webhook_key"
fullPathAndQuery = "/v2/some/endpoint?param=value"
xRequestId = "unique-request-id"
requestBody = "{\"key\":\"value\"}"
stringToSign = "your_webhook_key\n/v2/some/endpoint?param=value\nunique-request-id\n{\"key\":\"value\"}"构建 stringToSign 后, 使用 HMAC-SHA256 并以您的 密钥 作为密钥来计算签名, 然后对结果进行 Base64 编码.
签名按以下步骤生成:
1. 使用 HMAC-SHA256 算法.
2. 使用 stringToSign (UTF-8) 作为输入消息.
3. 将您的 secret (UTF-8) 用作密钥.
4. 将 HMAC 输出编码为 Base64 (标准 Base64)
将生成的 签名 作为请求头中 X-Signature 的值
import base64
import hashlib
import hmac
import uuid
def create_signature(webhook_key, webhook_secret, full_path_and_query, x_request_id, request_body=""):
string_to_sign = (
webhook_key + "\n" +
full_path_and_query + "\n" +
(x_request_id or "") + "\n" +
(request_body or "")
)
digest = hmac.new(
webhook_secret.encode("utf-8"),
string_to_sign.encode("utf-8"),
hashlib.sha256
).digest()
return base64.b64encode(digest).decode("utf-8")
webhook_key = "your_webhook_key"
webhook_secret = "your_secret"
full_path_and_query = "/v2/some/webhook/path"
x_request_id = str(uuid.uuid4())
request_body = ""
x_signature = create_signature(
webhook_key,
webhook_secret,
full_path_and_query,
x_request_id,
request_body
)
print("X-Request-ID:", x_request_id)
print("X-Signature:", x_signature)webhook 请求的请求体包含触发该通知的事件信息。请求体数据的格式由 Content-Type 标头决定,通常为 application/json。
请求正文包括以下参数:
示例:
请求正文包含以下参数:
| 参数 | 描述 |
|---|---|
| 活动 | 触发该通知的事件类型。 |
| 事件 ID | 触发该通知的事件 ID。 |
| 时间戳 | 事件发生的时间戳. |
| 数据 | 与该事件关联的数据。 |
webhook 请求的响应将以 JSON 格式发送, 具体取决于请求中指定的 Content-Type 头.
响应正文会说明请求的处理状态, 比如是已成功处理, 还是遇到了错误.
响应通常包含 1 个部分:状态
示例:
为确保安全,请求应通过 https(安全套接字)发送。同一时间只能处理 1 个请求,因此请等待当前请求完成后再发送下一个请求。
根据您账户的价格档位,您将获得不同的线程数:
| 价格档位 | 线程数 | 速率限制 |
|---|---|---|
| 普通会员 | 1 个线程 | 60/分钟 (1/秒) |
| 黄金会员 | 5 个线程 | 600/分钟 (10/秒) |
| 铂金会员 | 35 个线程 | 6000/分钟 (100/秒) |
注意: place_auction_bid & get_auction_bid 目前不受上述速率限制约束.
对于 域名评估 命令,你会根据账户的价格等级获得不同的允许请求次数:
| 价格档位 | 速率限制 |
|---|---|
| 普通会员 | 50/天 |
| 黄金会员 | 100/天 |
| 铂金会员 | 300/天 |
Dynadot API 沙盒环境让你能安心测试 API 集成,不会影响你的正式账户或真实资金。
1. 登录您的 Dynadot 账户并前往 API 设置页面:
2. https://www.dynadot.com/account/domain/setting/api.html
3. 生成您的 API 沙盒 Key 和 API 沙盒 Secret Key。
4. 生成后,请稍等片刻,让系统有时间激活您的沙盒密钥并创建沙盒账户。
5. 您的沙盒账户将预先充值 10,000 的余额,涵盖所有支持的货币,供测试使用。
沙盒环境中的 API 命令,在功能上与生产环境别无二致。
唯一的区别在于基础 URL:
生产环境 API URL: https://api.dynadot.com
沙盒 API URL: https://api-sandbox.dynadot.com
沙盒环境中,部分 API 命令可能用不了。请查看具体命令文档,确认是否有 "支持 API 沙盒" 标记。
沙盒主要供测试使用。某些命令可能与生产环境有所不同,且沙盒 无法完全模拟所有可能出现的复杂场景 可在生产环境中找到。
变更日志详细记录了 API 每个版本中引入的变更、改进、错误修复和新功能。它通过记录每次更新的影响,为用户和开发者提供透明度。它由两个关键部分组成:
这部分重点介绍 API 的版本管理机制, 它帮助开发者跟踪功能的演进并确保兼容性. 每个 API 版本都有一个唯一的版本号 (例如, v1.0.1, v2.2.3) 来标识, 并代表一个重要的里程碑或发布版本. 版本管理让用户可以在准备好时选择更新, 从而以最小的干扰维持集成.
变更日志历史记录详细展示了每个版本中引入的更新、缺陷修复、弃用与增强。它列出了对端点、参数、身份验证机制或响应格式所做的具体变更。本节让开发人员能完全透明地了解发生了哪些变化,并据此调整自己的实现。通过维护清晰而详尽的变更日志,我们希望为开发人员提供所需的工具和信息,帮助他们高效且自信地管理集成。
版本代码用于系统地识别和管理 API 更新. 它们遵循语义化版本 (SemVer) 格式:
版本代码的每个组成部分都各司其职并帮助开发者有效传达变更的范围与类型.
定义: 指可能破坏向后兼容性的重大变更.
格式:
x.<Minor>.x定义:表示向后兼容的功能新增。
格式:
x.<Minor>.x定义:指向后兼容的缺陷修复或细微优化。
格式:
x.x.<Patch>变更日志是软件或 API 每个版本中变更、改进、错误修复和新功能的详细记录。它通过记录每次更新的影响,让用户和开发者对变化一目了然。
变更日志中的典型条目通常包含:
描述: 简要说明更改了什么.
受影响的组件:受此次变更影响的具体模块、端点或功能。
持续跟踪 Dynadot API 的每一次变更.