Go SDK使用示例

更新时间:
复制 MD 格式

本文以 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

源码仓库:alibabacloud-go/cms-20240330

配置访问凭据

工程代码建议使用更安全的无 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)
    }
}

步骤介绍

  1. 引入依赖包:

    import (
        cms20240330 "github.com/alibabacloud-go/cms-20240330/v10/client"
        openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    )
  2. 初始化配置对象 &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")
  3. 实例化客户端:

    client, _ := cms20240330.NewClient(config)
  4. 创建对应 API 的 Request:

    request := &cms20240330.GetCmsServiceRequest{}
  5. 设置请求参数:

    request.Product = tea.String("your_value")
    request.Service = tea.String("your_value")
  6. 通过 client 调用接口:

    response, err := client.GetCmsService(request)
    fmt.Println(response)
  7. 处理报错:

    if err != nil {
        fmt.Println(err)
        return
    }
  8. 从 response 读取返回值,例如:

    fmt.Println(tea.StringValue(response.Body.RequestId))

更多接口与示例代码可在 OpenAPI 门户 SDK 示例 查看。