我尝试为 Record delate-record实现删除方法,但这是我第一次使用 python 和这个 api。
3 回答
首先,发送一个 GET 请求到https://api.godaddy.com/v1/domains/{DOMAIN}/records
然后,枚举 API 响应(JSON 数组)的所有记录,并通过删除需要删除的记录来准备新数据。
API 响应(示例)
[
{
"data": "192.168.1.1",
"name": "@",
"ttl": 600,
"type": "A"
},
{
"data": "ns1.example.com",
"name": "@",
"ttl": 3600,
"type": "NS"
},
{
"data": "@",
"name": "www",
"ttl": 3600,
"type": "CNAME"
},
{
"data": "mail.example.com",
"name": "@",
"ttl": 3600,
"priority": 1,
"type": "MX"
}
]
新数据(删除记录后)(示例)
[
{
"data": "192.168.1.1",
"name": "@",
"ttl": 600,
"type": "A"
},
{
"data": "ns1.example.com",
"name": "@",
"ttl": 3600,
"type": "NS"
},
{
"data": "@",
"name": "www",
"ttl": 3600,
"type": "CNAME"
}
]
https://api.godaddy.com/v1/domains/{DOMAIN}/records
现在,使用新数据发送 PUT 请求。
最重要的是如何识别上述数组中需要删除的记录。假设您具有良好的编程技能,这将不是一项艰巨的任务。
GoDaddy API 没有删除记录方法,因此此功能未在驱动程序中公开。 https://developer.godaddy.com/doc#!/_v1_domains/recordReplace
驱动程序可以提供“替换区域中的记录”方法,这将允许您获取当前记录列表,然后将新列表设置为减去您要删除的记录。但是该功能没有实现,而且风险很大。
我设法以一种 hacky 的方式解决了这个问题——我们有一堆我们想要删除的记录,手动操作看起来很奇怪,所以我在 Chrome 开发者控制台中添加了一个 Javascript,在来自 DNS 管理页面的经过身份验证的会话上运行:
function deleteGoDaddyRecords(recordId) {
$.ajax({
url: 'https://dcc.godaddy.com/api/v3/domains/<YOUR-DOMAIN.com>/records?recordId='+recordId,
type: 'DELETE',
success: function(result) {
console.log(result)
}
});
}
当您要求删除记录时,这让我可以使用 UI 调用的相同调用。
您唯一需要提供的是公共 API 不提供的 AttributeUid,但它在前端 API 中:
https://dcc.godaddy.com/api/v2/domains/runahr.com/records
所以我设法创建了一个脚本来生成一堆
deleteGoDaddyRecords('<RECORD-UUID>');
deleteGoDaddyRecords('<RECORD-UUID>');
将生成的脚本复制并粘贴到开发人员控制台中,现在就解决了。
我希望 GoDaddy 将来会在他们的 API 中添加一个公共的 DELETE 端点 :)