本文以 Go SDK V2.0 为例,演示如何调用云监控2.0(cms20240330)OpenAPI。其他接口的调用方法类似,仅需替换 Request/Response 类型与字段。
环境要求
Go 1.10.x 及以上。
安装方式
在项目目录下执行:
go get github.com/alibabacloud-go/cms-20240330/v10
go get github.com/alibabacloud-go/darabonba-openapi/v2/client
go get github.com/alibabacloud-go/tea-utils/v2/service
go get github.com/aliyun/credentials-go/credentials
go get github.com/alibabacloud-go/tea/tea配置访问凭据
工程代码建议使用更安全的无 AK 方式,凭据配置方式请参见管理访问凭证。最简单的做法是在系统环境变量中配置:
export ALIBABA_CLOUD_ACCESS_KEY_ID="<your-access-key-id>"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="<your-access-key-secret>"credentials.NewCredential(nil) 会按照默认凭据链顺序查找凭据。
完整代码示例
以下示例调用 GetCmsService 接口,查询云监控2.0服务对应产品的开通状态:
package main
import (
"encoding/json"
"fmt"
"os"
"strings"
cms20240330 "github.com/alibabacloud-go/cms-20240330/v10/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
credential "github.com/aliyun/credentials-go/credentials"
)
// 使用凭据初始化账号 Client
func CreateClient() (_result *cms20240330.Client, _err error) {
// 工程代码建议使用更安全的无 AK 方式。
cred, _err := credential.NewCredential(nil)
if _err != nil {
return _result, _err
}
config := &openapi.Config{
Credential: cred,
}
// Endpoint 请参考 https://api.aliyun.com/product/Cms
config.Endpoint = tea.String("metrics.cn-hangzhou.aliyuncs.com")
_result, _err = cms20240330.NewClient(config)
return _result, _err
}
func _main(args []*string) (_err error) {
client, _err := CreateClient()
if _err != nil {
return _err
}
getCmsServiceRequest := &cms20240330.GetCmsServiceRequest{
Product: tea.String("your_value"),
Service: tea.String("your_value"),
}
headers := make(map[string]*string)
tryErr := func() (_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
resp, _err := client.GetCmsServiceWithOptions(getCmsServiceRequest, headers, &util.RuntimeOptions{})
if _err != nil {
return _err
}
fmt.Printf("[LOG] %v\n", resp)
return nil
}()
if tryErr != nil {
var err = &tea.SDKError{}
if _t, ok := tryErr.(*tea.SDKError); ok {
err = _t
} else {
err.Message = tea.String(tryErr.Error())
}
// 错误 message
fmt.Println(tea.StringValue(err.Message))
// 诊断地址
var data interface{}
d := json.NewDecoder(strings.NewReader(tea.StringValue(err.Data)))
d.Decode(&data)
if m, ok := data.(map[string]interface{}); ok {
recommend, _ := m["Recommend"]
fmt.Println(recommend)
}
}
return _err
}
func main() {
err := _main(tea.StringSlice(os.Args[1:]))
if err != nil {
panic(err)
}
}步骤介绍
引入依赖包:
import ( cms20240330 "github.com/alibabacloud-go/cms-20240330/v10/client" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" )初始化配置对象
&openapi.Config。Config 对象存放 Credential、Endpoint 等配置,Endpoint 如示例中的metrics.cn-hangzhou.aliyuncs.com。cred, _ := credential.NewCredential(nil) config := &openapi.Config{ Credential: cred, } config.Endpoint = tea.String("metrics.cn-hangzhou.aliyuncs.com")实例化客户端:
client, _ := cms20240330.NewClient(config)创建对应 API 的 Request:
request := &cms20240330.GetCmsServiceRequest{}设置请求参数:
request.Product = tea.String("your_value") request.Service = tea.String("your_value")通过 client 调用接口:
response, err := client.GetCmsService(request) fmt.Println(response)处理报错:
if err != nil { fmt.Println(err) return }从 response 读取返回值,例如:
fmt.Println(tea.StringValue(response.Body.RequestId))
更多接口与示例代码可在 OpenAPI 门户 SDK 示例 查看。
该文章对您有帮助吗?