Go

最近更新时间:11/9/2023, 4:21:50 PM作者:andrewren(任豪)

简介

  • 本文以 GO SDK 为例,介绍如何使用、调试并接入工业云 OpenAPI。

依赖环境

  • Go 1.13版本及以上。
  • 获取安全凭证。安全凭证包含 SecretId 及 SecretKey 两部分。SecretId 用于标识 API 调用者的身份,SecretKey 用于加密签名字符串和服务器端验证签名字符串的密钥,获取密钥需向工业云申请获取。

!您的安全凭证切勿泄露他人。

  • 获取调用地址。调用地址(endpoint)一般形式为*.{工业环境域名},模块的调用地址有一定区别,例如,商品的调用地址为product-mgmt-api.{工业环境域名},具体调用地址可参考对应的 API 文档

安装 SDK

通过 go get 安装

待提供

通过源码安装

前往 SDK 托管地址 下载最新代码,解压后使用。

使用 SDK

每个接口都有一个对应的 Request 结构和一个 Response 结构。例如,商品的查询商品列表接口 DescribeProducts 有对应的请求结构体 DescribeProductRequest 和返回结构体 DescribeProductResponse。

下面以查询商品列表接口为例,介绍 SDK 的基础用法。出于演示目的,有一些非必要的内容也在示例中,以尽量展示 SDK 常用的功能,但也显得臃肿,在实际编写代码使用 SDK 的时候,应尽量简化。

示例1:商品列表(DescribeProducts)

package main

import (
    "fmt"
    "sdk-go/client/product"

    "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
    "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
    "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
    "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/regions"
)

func main() {
    // 必要步骤:
    // 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
    // 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
    // 以免泄露密钥对危及你的财产安全。
    credential := common.NewCredential("secretId",
        "secretKey")

    // 非必要步骤
    // 实例化一个客户端配置对象,可以指定超时时间等配置
    cpf := profile.NewClientProfile()
    // SDK默认使用POST方法。
    // 如果你一定要使用GET方法,可以在这里设置。GET方法无法处理一些较大的请求。
    // 如非必要请不要修改默认设置。
    cpf.HttpProfile.ReqMethod = "POST"
    // SDK有默认的超时时间,如非必要请不要修改默认设置。
    // 如有需要请在代码中查阅以获取最新的默认值。
    cpf.HttpProfile.ReqTimeout = 30
    cpf.HttpProfile.Scheme = "HTTP"
    // SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务,
    // 则必须手动指定域名,例如云服务器的上海金融区域名: cvm.ap-shanghai-fsi.tencentcloudapi.com
    //cpf.HttpProfile.Endpoint = "iam-api.industry-tiyan.xyz"
    cpf.HttpProfile.Endpoint = "product-mgmt-app-api.delivery.wedev.cool"

    // SDK默认用HmacSHA256进行签名,它更安全但是会轻微降低性能。
    cpf.SignMethod = "TC3-HMAC-SHA256"
    // SDK 默认用 zh-CN 调用返回中文。此外还可以设置 en-US 返回全英文。
    // 但大部分产品或接口并不支持全英文的返回。
    // 如非必要请不要修改默认设置。
    cpf.Language = "zh-CN"
    //打印日志,默认是false
    // cpf.Debug = true

    // 实例化要请求产品的client对象
    // 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
    client, _ := product.NewClient(credential, regions.Guangzhou, cpf)
    // 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
    // 属性可能是基本类型,也可能引用了另一个数据结构。
    // 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明。
    request := product.NewDescribeProductsRequest()

    // 通过client对象调用想要访问的接口,需要传入请求对象
    response, err := client.DescribeProducts(request)

    // 处理异常
    if _, ok := err.(*errors.TencentCloudSDKError); ok {
        fmt.Printf("An API error has returned: %s", err)
        return
    }
    // 非SDK异常,直接失败。实际代码中可以加入其他的处理。
    if err != nil {
        panic(err)
    }
    // 打印返回的json字符串
    fmt.Printf("%v, %+v", *response.Response.RequestId, response.Response.ProductInfos)
}

在 cmd 窗口执行即可:

go run test.go

!此过程会真实发送请求,请不要测试消费等接口,以免造成财产损失

更多示例

您可以在 SDK 中的examples目录下获取更多详细的示例。