如何从Azure Go SDK的报错中提取对应的HTTP状态码?
Azure SDK for Go 提取错误HTTP状态码的方案
Azure Go SDK 官方提供了标准的错误封装类型,你可以直接通过类型断言提取状态码,分两种SDK版本场景处理:
针对Track 2 版本SDK(当前官方推荐版本,包路径前缀为 github.com/Azure/azure-sdk-for-go/sdk/)
引入azcore包的ResponseError类型即可直接提取:
import ( "errors" "github.com/Azure/azure-sdk-for-go/sdk/azcore" ) // 处理Get接口404重试逻辑 var respErr *azcore.ResponseError if errors.As(err1, &respErr) { if respErr.StatusCode == 404 { // 此处写你的404重试逻辑 } } // 处理CreateOrUpdate接口409重试逻辑 if errors.As(err2, &respErr) { if respErr.StatusCode == 409 { // 此处写你的409重试逻辑 } }
额外说明:*azcore.ResponseError 还携带了ErrorCode字段,对应Azure服务返回的业务错误码,粒度比HTTP状态码更细,需要精准判断错误场景时可以配合使用。
针对Track 1 版本SDK(旧版本,包路径依赖github.com/Azure/go-autorest)
可以直接用autorest提供的工具方法提取状态码:
import "github.com/Azure/go-autorest/autorest" // 提取状态码示例 code := autorest.ResponseErrorStatusCode(err1) if code == 404 { // 重试逻辑 }
内容的提问来源于stack exchange,提问作者Yuhui Liu
相关产品推荐
相关产品推荐

