DNS API 介面文件
概述
本文檔描述了DNS記錄的查詢、新增、更新和刪除介面。所有介面均採用 GET 方法,並須進行請求簽章。
基礎路徑 (Base URI): https://www.tnet.hk
請求方法: 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方法),可供參考。
介面列表
1. 取得網域解析記錄清單
查詢指定網域的所有DNS解析記錄。
請求路徑: /api/dns/DescribeRecordIndex
請求方法: GET
請求參數:
| 參數名 | 類型 | 是否必填 | 描述 |
|---|---|---|---|
| Domain | String | 是 | 要查詢的網域,例如: csbxhk.com.hk |
請求範例:
在新增了所有簽章所需公用參數後,一個完整的請求URL範例如下:
複製
https://www.tnet.hk/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, hkAME, TXT等 |
| Value | String | 是 | 記錄值,如 IP 位址或網域 |
| Ttl | Integer | 是 | 記錄的 TTL (存活時間) 值,單位:秒 |
請求範例:
複製
http://wwws.tnet.hk/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, hkAME, TXT等 |
| Value | String | 是 | 記錄值,如 IP 位址或網域 |
| Ttl | Integer | 是 | 記錄的 TTL (存活時間) 值,單位:秒 |
請求範例:
此介面在文件中範例僅更新了 Host欄位。
複製
https://www.tnet.hk/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.tnet.hk/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.tnet.hk) 也可能因部署環境不同而需要變更。