huaweicloud-sdk-go-v3
huaweicloud-sdk-go-v3 copied to clipboard
region.go的ValueOf方法建议
不存在的region,感觉没必要panic吧,返回个nil合理一点
你好,您的建议已收到,我们先内部讨论一下。此处 panic 是考虑到如果找不到region,SDK Core中必填项 endpoint 无法获取,在发请求的时候也会有异常,所以提前拦截了。
我原打算利用该方法获取region,获取不到我自己会做判断,不会发请求的。现在这个方法根本没办法用。
你好,针对panic的场景,我们建议你可以查看一下处理panic的recover方法,您看下这样能否满足您的使用场景
client 构造一定加 recover hhh
那 client 构造返回 err 的意义何在呢
v0.1.84
版本新增了一套没有panic的构建方法,具体可参考README
package main
import (
"os"
"fmt"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
vpc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2"
vpcModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2/model"
vpcRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v2/region"
)
func main() {
// 配置认证信息
auth, err := basic.NewCredentialsBuilder().
WithAk(os.Getenv("HUAWEICLOUD_SDK_AK")).
WithSk(os.Getenv("HUAWEICLOUD_SDK_SK")).
SafeBuild()
if err != nil {
fmt.Println(err)
return
}
// Get available region
region, err := vpcRegion.SafeValueOf("cn-north-4")
if err != nil {
fmt.Println(err)
return
}
// 创建服务客户端
hcClient, err := vpc.VpcClientBuilder().
WithRegion(region).
WithCredential(auth).
SafeBuild()
if err != nil {
fmt.Println(err)
return
}
client := vpc.NewVpcClient(hcClient)
// 发送请求并获取响应
request := &vpcModel.ListVpcsRequest{}
response, err := client.ListVpcs(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
}