You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用GoDaddy API获取域名domain、nameServers及expires字段失败的问题排查

GoDaddy API获取域名domain、nameServers及expires字段失败的问题排查

看起来你遇到的核心问题是调用了错误的GoDaddy API端点——你需要的是域名本身的元数据(包括到期时间、域名服务器),但你一直在调用DNS记录相关的接口,自然拿不到想要的字段。我来帮你拆解问题并给出正确的解决方案:

先搞清楚API端点的区别

GoDaddy的API分工很明确:

  • /v1/domains/{domain}/records/...:这个系列接口是用来管理DNS记录的,返回的是该域名下的A/CNAME/MX等记录的具体信息,完全不包含域名的到期时间、域名服务器这类元数据。
  • /v1/domains/{domain}:这才是获取域名基本信息的正确接口,返回的数据里包含你需要的domainnameServersexpires字段。

分析你之前代码的问题

  1. 第一次调用的/v1/domains/example.com/records/A/@:返回的仅仅是@主机的A记录详情,只有datanamettl这类DNS记录字段,根本没有expiresnameServers,所以你永远拿不到这些值。
  2. 第二次调用的/v1/domains/example.com/records/:返回的是该域名下所有DNS记录的数组,同样不包含域名元数据。你尝试取$content[0].data得到的是第一条DNS记录的值,不是域名本身;而且$status$expires这些变量根本没从响应里赋值,自然输出为空。

正确的代码实现

下面是修改后的完整代码,直接调用正确的API端点来获取你需要的字段:

# 加载配置文件
. .\configs\example.com_update_gd_dns_cfg.ps1

# 设置请求头,明确指定接受JSON格式
$headers = @{
    "Authorization" = "sso-key $($key):$($secret)"
    "Accept" = "application/json"
}

# 调用获取域名基本信息的API端点
$apiUri = "https://api.godaddy.com/v1/domains/$($domain)"
$result = Invoke-WebRequest -Uri $apiUri -Method Get -Headers $headers

# 解析JSON响应内容
$domainInfo = ConvertFrom-Json $result.Content

# 输出你需要的字段
Write-Output "Domain: $($domainInfo.domain)"
Write-Output "Name Servers: $($domainInfo.nameServers -join ', ')"
# 可选:把ISO格式的到期时间转换成更易读的格式
Write-Output "Expires At: $(Get-Date $domainInfo.expires -Format 'yyyy-MM-dd HH:mm:ss')"

额外注意事项

  • 确保你的API密钥和秘钥拥有域名读取权限:在GoDaddy开发者后台创建密钥时,要选择对应的权限范围,否则可能会返回403禁止访问错误。
  • 如果是测试环境,需要把API地址换成https://api.ote-godaddy.com/v1/domains/$($domain)(OTE是GoDaddy的官方测试环境)。

备注:内容来源于stack exchange,提问作者hod alkaly

火山引擎 最新活动