DNS API 接口文档 概述
本文档描述了DNS记录的查询、添加、更新和删除接口。所有接口均采用 GET 方法,并需要进行请求签名。
基础路径 (Base URI): https://www.now.cn
请求方法: GET
签名机制: 是 (使用 HMAC-SHA1)
公共参数: 除接口特定参数外,每个请求都必须包含用于签名的公共参数。
签名机制 (Signature)
在调用任何接口前,必须对所有请求参数(包括公共参数和接口特定参数)进行签名,并将签名结果 Signature作为参数附加到请求中。
签名步骤:
准备公共参数: 将以下公共参数加入请求参数字典:
AccessInstanceID: 您的访问密钥ID (AccessKeyID)。
SignatureMethod: 固定为 HMAC-SHA1。
Timestamp: 请求的时间戳,格式为 ISO 8601 标准的 UTC 时间,例如 2023-10-27T06:50:12Z。
SignatureNonce: 用于防重放的唯一随机数,长度至少8位。
参数排序与编码:
将所有参数(包括公共参数和接口参数)按照参数名字典序升序排序。
对排序后的参数进行规范化编码,生成 CanonicalizedQueryString。编码规则使用 percentEncode函数(将“+”替换为“%20”,“*”替换为“%2A”,“%7E”替换为“~”)。
构造签名字符串:
格式:StringToSign = “GET&” + percentEncode(“/") + “&” + percentEncode(CanonicalizedQueryString)
计算签名:
使用 HMAC-SHA1 算法,以您的 AccessKeySecret作为密钥,对 StringToSign进行签名。
将签名结果进行 Base64 编码,得到的字符串即为 Signature参数的值。
添加签名:
将计算得到的 Signature值加入到最终的请求参数中。
注意: 您提供的 DnsApiTest.php文档中已包含完整的签名实现(sign, percentEncode, sign_string方法),可供参考。
接口列表
- 获取域名解析记录列表
查询指定域名的所有DNS解析记录。
请求路径: /api/dns/DescribeRecordIndex
请求方法: GET
请求参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Domain | String | 是 | 要查询的域名,例如: csbxhk.com.cn |
请求示例:
在添加了所有签名所需公共参数后,一个完整的请求URL示例如下:
复制 https://www.now.cn/api/dns/DescribeRecordIndex?AccessInstanceID=113515821&Domain=csbxhk.com.cn&Signature=计算出的签名值&SignatureMethod=HMAC-SHA1&SignatureNonce=随机字符串&Timestamp=2023-10-27T06:50:12Z 2. 添加域名解析记录
为指定域名添加一条新的DNS解析记录。
请求路径: /api/dns/AddDomainRecord
请求方法: GET
请求参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Domain | String | 是 | 要添加记录的域名 |
| Host | String | 是 | 主机记录,如 www, @, *等 |
| Type | String | 是 | 记录类型,如 A, CNAME, TXT等 |
| Value | String | 是 | 记录值,如 IP 地址或域名 |
| Ttl | Integer | 是 | 记录的 TTL (生存时间) 值,单位:秒 |
请求示例:
复制 http://wwws.now.cn/api/dns/AddDomainRecord?AccessInstanceID=113515821&Domain=csbxhk.com.cn&Host=c&Signature=计算出的签名值&SignatureMethod=HMAC-SHA1&SignatureNonce=随机字符串&Ttl=600&Timestamp=2023-10-27T06:50:12Z&Type=A&Value=1.1.1.1 3. 更新域名解析记录
更新指定域名解析记录的配置。
请求路径: /api/dns/UpdateDomainRecord
请求方法: GET
请求参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Domain | String | 是 | 记录所属的域名 |
| Id | String | 是 | 需要更新的解析记录的 ID |
| Host | String | 是 | 更新后的主机记录 |
| Type | String | 是 | 记录类型,如 A, CNAME, TXT等 |
| Value | String | 是 | 记录值,如 IP 地址或域名 |
| Ttl | Integer | 是 | 记录的 TTL (生存时间) 值,单位:秒 |
请求示例:
此接口在文档中示例仅更新了 Host字段。
复制 https://www.now.cn/api/dns/UpdateDomainRecord?AccessInstanceID=113515821&Domain=csbxhk.com.cn&Host=w&Id=19367&Signature=计算出的签名值&SignatureMethod=HMAC-SHA1&SignatureNonce=随机字符串&Timestamp=2023-10-27T06:50:12Z 4. 删除域名解析记录
删除一条指定的域名解析记录。
请求路径: /api/dns/DeleteDomainRecord
请求方法: GET
请求参数:
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| Domain | String | 是 | 记录所属的域名 |
| Id | String | 是 | 需要删除的解析记录的 ID |
请求示例:
复制 https://www.now.cn/api/dns/DeleteDomainRecord?AccessInstanceID=113515821&Domain=csbxhk.com.cn&Id=19370&Signature=计算出的签名值&SignatureMethod=HMAC-SHA1&SignatureNonce=随机字符串&Timestamp=2023-10-27T06:50:12Z 调用步骤总结
准备参数: 确定要调用的接口,并组装其特定参数。
签名:
a. 加入公共参数 (AccessInstanceID, SignatureMethod, Timestamp, SignatureNonce)。
b. 对所有参数(按名称升序)进行规范化编码,生成待签名字符串。
c. 使用您的 AccessKeySecret,通过 HMAC-SHA1 算法计算签名,并进行 Base64 编码。
d. 将签名值作为 Signature参数加入请求。
发起请求: 使用 HTTP GET 方法,将所有参数以 Query String 形式附加到 API 请求路径后,向服务器发起请求。
重要提示: 文档中的 AccessInstanceID AccessKeySecret仅为示例,在实际调用时请替换为您自己的密钥。base_uri(http://www.now.cn) 也可能因部署环境不同而需要更改。