Cloudflare-go v4中ZoneIDByName()方法替代方案咨询
在Cloudflare-go SDK v4中获取Zone ID的替代方法
Cloudflare-go SDK v4移除了旧版本中的ZoneIDByName()函数,你可以通过ListZones()方法结合参数过滤来实现相同功能。
替代实现代码
import ( "context" "fmt" "github.com/cloudflare/cloudflare-go/v4" ) // 替代原ZoneIDByName的自定义函数 func getZoneID(api *cloudflare.API, domain string) (string, error) { // 通过ListZonesParams指定域名过滤条件 zones, _, err := api.ListZones(context.Background(), cloudflare.ListZonesParams{ Name: domain, }) if err != nil { return "", err } // 检查是否找到匹配的Zone if len(zones) == 0 { return "", fmt.Errorf("未找到域名%s对应的Zone", domain) } // 返回第一个匹配的Zone ID(Cloudflare中域名对应唯一Zone) return zones[0].ID, nil }
使用说明
- 调用
ListZones()时传入context和指定Name参数的ListZonesParams,SDK会直接返回匹配该域名的Zone列表 - 由于Cloudflare中每个根域名对应唯一Zone,直接取列表第一个元素的
ID即可 - 需要处理查询错误和未找到Zone的情况,避免空指针或无意义返回值
内容的提问来源于stack exchange,提问作者Jeroen Jacobs
相关产品推荐
相关产品推荐

