檢查域名可用性
概述
檢查一個 name 在三個通常影響專案命名決策的層面上是否可用:域名 TLD、npm 套件名稱和 GitHub 使用者名稱/組織名稱。每項檢查都是獨立的免費、無需金鑰的 API 呼叫——當使用者在命名時,可同時執行這些檢查;如果使用者只問了域名,則只需進行域名檢查。
域名 API
GET https://domainee.dev/api/v1/tools/domain-availability-checker?name=<name>&tlds=<tld>&tlds=<tld>...
name(必填)— 不含 TLD 的域名,例如mybrand。tlds(選填,可重複)— 例如?tlds=com&tlds=io。省略時 → 預設為com, io, dev, app, co, net, org, me, ai, xyz。- 無需驗證。務必使用主機
domainee.dev/api/...,而非api.domainee.dev——文檔頁面提到那個主機,但它會回傳 401(「缺少 Bearer token」);可正常運作且支援 CORS 的端點是同源下的domainee.dev/api。
速率限制:每個 IP 每分鐘 30 次請求,每天 500 次請求。剩餘配額在 x-ratelimit-remaining-minute / x-ratelimit-remaining-day 回應標頭中。429 狀態碼會包含 Retry-After——應向使用者顯示該資訊,而非默默重試。
成功:
{"ok":true,"data":{"name":"google","results":[
{"tld":"com","fqdn":"google.com","available":false,"registrarHint":null},
{"tld":"io","fqdn":"google.io","available":true,"registrarHint":null}
]}}
錯誤(例如缺少 name):
{"ok":false,"error":{"code":"missing_param","message":"Query parameter `name` is required (e.g. ?name=mybrand)"}}
無法識別的 TLD 不是錯誤——它只會回傳空的 results 陣列。
個別 TLD 的註冊局查詢也可能逾時。該 TLD 的條目會顯示 "available":null,並在 registrarHint 中說明原因(例如 "操作因逾時而中止"),而 ok 仍為 true,且回應中的其他 TLD 不受影響。將 null 視為未知,而非可用或已被註冊——應將其顯示為單獨的「無法檢查」行,而不是進行猜測。如果回應中的所有 TLD 同時都回傳 null,則表示整個請求出現暫時性問題,而非 10 次巧合的逾時——在向使用者報告全部未知的結果之前,應重新呼叫一次。
npm 套件名稱 API
GET https://registry.npmjs.org/<name>
無需驗證,實際上無需擔心速率限制標頭。200 = 名稱已被佔用(存在真實套件),404 = 可用。對於範圍名稱(@scope/name),請對斜線進行 URL 編碼:https://registry.npmjs.org/@scope%2Fname。
GitHub 使用者名稱/組織 API
GET https://api.github.com/users/<name>
無需驗證。200 = 已被佔用,404 = 可用。未經驗證的請求限制為每 IP 每小時 60 次(x-ratelimit-remaining 標頭)——對於少量檢查來說足夠,但請勿對大量候選名稱進行迴圈呼叫。
工作流程
- 移除使用者可能已輸入的任何 TLD,以取得純粹的
name。 - 如果使用者只是詢問某個域名,則僅呼叫域名 API。如果使用者正在為專案/新創公司/套件/工具命名,則針對該
name同時執行三項檢查(域名、npm、GitHub)——這個組合才是此技能的重點,而非孤立的域名查詢。 - 呼叫域名 API。如果使用者未指定特定的 TLD,則省略
tlds以使用預設的 10 個後綴集合。 - 顯示一個合併的摘要:一個 TLD 表格(可用 ✅ / 已被佔用 ❌ / 未知-逾時 ⚠️,來自
registrarHint),加上 npm 和 GitHub 各一行(✅/❌)。 - 詢問一次是否要檢查更多 TLD(建議幾個尚未涵蓋的,例如
.ai、.so、一個 ccTLD)——除非使用者再次提起,否則不要對同一個名稱重複詢問。 - 如果他們指定更多 TLD,則僅使用那些
tlds重新呼叫域名 API,並顯示新的結果。
社交帳號(X、Instagram 等)刻意不包含——這些平台都沒有提供免費、未經驗證的可用性檢查;抓取個人資料頁面不可靠且違反大多數的使用條款。如果被問及,應直接說明,而非透過抓取來猜測。
範例
curl -s "https://domainee.dev/api/v1/tools/domain-availability-checker?name=mybrand&tlds=com&tlds=io&tlds=ai"
curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/mybrand"
curl -s -o /dev/null -w "%{http_code}" "https://api.github.com/users/mybrand"
常見錯誤
- 使用
api.domainee.dev——錯誤的主機,會回傳 401。請使用domainee.dev/api/...。 - 將空的
results陣列視為失敗——這表示 TLD 未被識別,而非錯誤。 - 在收到 429 後立即重試——請遵守
Retry-After並告知使用者,不要進行迴圈。 - 針對單純的「這個域名可用嗎?」問題檢查 npm/GitHub——只有當使用者實際在命名時才納入這些檢查,而非針對每個域名查詢。
- 聲稱能夠檢查社交帳號——沒有可靠的免費 API 可用;應說明這不在範圍內。