10

我正在尝试使用 GoDaddy 的 API 将 A 记录添加到域中,但我在浏览器的控制台中收到 422(无法处理的实体)响应错误。但是,当我使用 GoDaddy 在https://developer.godaddy.com/doc#!/_v1_domains/recordAdd/ArrayOfDNSRecord上的文档测试请求时,我收到以下正文的 404 响应错误:

错误响应正文:

{
  "code": "UNKNOWN_DOMAIN",
  "message": "The given domain is not registered, or does not have a zone file",
  "name": "_Class"
}

我试图添加 A 记录的域肯定存在,所以我不知道为什么它会返回 404 错误。我使用 GET 请求检索属于域的所有 A 记录没有问题,但是当我尝试运行下面的 PATCH 请求时,我得到了错误。

GoDaddy 的 API 是否有问题,或者我的请求结构是否存在问题?

返回错误的 PATCH 请求

$.ajax({
  type: 'PATCH',
  url: 'https://api.godaddy.com/v1/domains/{domain}/records',
  data: {
    'records': [{
      'type': 'A',
      'name': 'test',
      'data': '255.255.255.255'
    }]
  },
  headers: {
    'Authorization': 'sso-key {API_KEY}:{API_SECRET}'
  },
  success: function(body) {
    console.log(body);
  }
});

工作正常的 GET 请求

$.ajax({
  type: 'GET',
  url: 'https://api.godaddy.com/v1/domains/{domain}/records/A',
  headers: {
    'Authorization': 'sso-key {API_KEY}:{API_SECRET}'
  },
  success: function(body) {
    $.each(body, function(i, v) {
      $('body').append('<p>Name: ' + v.name + '<br/>Data: ' + v.data + '</p>');
    });
  }
});
4

3 回答 3

6

您还需要指定域:

$.ajax({
  type: 'PATCH',
  url: 'https://api.godaddy.com/v1/domains/{domain}/records',
  data: {
  'domain': '<domain>',
    'records': [{
       'type': 'A',
       'name': 'test',
       'data': '255.255.255.255'
    }]
  },
  headers: {
    'Authorization': 'sso-key {API_KEY}:{API_SECRET}'
  },
  success: function(body) {
    console.log(body);
  }
});

另请注意,可选的 ttl 字段至少需要为 600。

于 2016-12-09T15:09:47.047 回答
5

我努力通过浏览器向 api.godaddy.com 服务器发出 jQuery 请求,但由于某种原因,我不确定服务器是否允许 PATCH 动词。

我测试了这个 curl 请求,并成功为我的一个域输入了新的 A 记录。我得到了空对象 ={}在卷曲后返回。

我也dig编辑了它,几分钟后记录在那里:

curl -X PATCH https://api.godaddy.com/v1/domains/{domain}/records \
  -H 'Authorization: sso-key xyz:xyz' \
  -H 'Content-Type: application/json' \
  --data '[{"type": "A","name": "blnk1","data": "192.1.2.3","ttl": 3600}]'

➜  ~ dig blnk.{domain}
;; ANSWER SECTION:
blnk.{domain}. 3599 IN  A   192.1.2.3
于 2016-12-12T10:02:47.130 回答
0

我刚刚遇到了同样的问题,对我来说问题是由他们的“OTE”和“生产”服务组合引起的。

由于您要查询api.godaddy.comand not api.ote-godaddy.com,因此您需要使用“生产”密钥和机密,并让您的站点在生产环境中运行,而不是在 GoDaddy 的运行测试环境中运行。

于 2018-04-12T23:53:27.613 回答