域名獨立解析API-介面文檔

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) 也可能因部署環境不同而需要變更。