• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

examples/H18-May-2021-

tencentcloud/H18-May-2021-

testing/integration/H18-May-2021-

.gitignoreH A D18-May-202112

.travis.ymlH A D18-May-2021124

CHANGELOG.mdH A D18-May-20211.4 MiB

LICENSEH A D18-May-202111.1 KiB

README.mdH A D18-May-20219.2 KiB

commit2tagH A D18-May-202131.9 KiB

doc.goH A D18-May-2021404

go.modH A D18-May-202160

products.mdH A D18-May-202116.2 KiB

README.md

1# 简介
2
3欢迎使用腾讯云开发者工具套件(SDK)3.0,SDK3.0 是云 API3.0 平台的配套工具。后续所有的云服务产品都会接入进来。新版 SDK实 现了统一化,具有各个语言版本的 SDK 使用方法相同,接口调用方式相同,统一的错误码和返回包格式这些优点。
4
5为方便 GO 开发者调试和接入腾讯云产品 API,这里向您介绍适用于 GO 的腾讯云开发工具包,并提供首次使用开发工具包的简单示例。让您快速获取腾讯云 GO SDK 并开始调用。
6
7# 依赖环境
8
91. Go 1.9 版本及以上(如使用go mod需要 Go 1.14),并设置好 GOPATH 等必须的环境变量。
102. 使用相关产品前需要在腾讯云控制台已开通相应产品。
113. 在腾讯云控制台[访问管理](https://console.cloud.tencent.com/cam/capi)页面获取 SecretID 和 SecretKey 。
12
13# 获取安装
14
15安装 Go SDK 前,先获取安全凭证。在第一次使用云 API 之前,用户首先需要在腾讯云控制台上申请安全凭证,安全凭证包括 SecretID 和 SecretKey, SecretID 是用于标识 API 调用者的身份,SecretKey 是用于加密签名字符串和服务器端验证签名字符串的密钥。SecretKey 必须严格保管,避免泄露。
16
17## 通过go get安装(推荐)
18
19推荐使用语言自带的工具安装 SDK :
20
21    go get -v github.com/tencentcloud/tencentcloud-sdk-go@latest
22
23推荐使用腾讯云镜像加速下载:
24
25    export GOPROXY=https://mirrors.tencent.com/go/
26
27注意:为了支持 go mod,SDK 版本号从 v3.x 降到了 v1.x。并于2021.05.10移除了所有v3.0.\*和3.0.\*的tag,如需追溯以前的tag,请参考项目根目录下的 `commit2tag` 文件。
28
29## 通过源码安装
30
31前往 [Github 代码托管地址](https://github.com/tencentcloud/tencentcloud-sdk-go) 下载最新代码,解压后安装到 $GOPATH/src/github.com/tencentcloud 目录下。
32
33# 示例
34
35每个接口都有一个对应的 Request 结构和一个 Response 结构。例如云服务器的查询实例列表接口 DescribeInstances 有对应的请求结构体 DescribeInstancesRequest 和返回结构体 DescribeInstancesResponse 。
36
37下面以云服务器查询实例列表接口为例,介绍 SDK 的基础用法。出于演示的目的,有一些非必要的内容也加上去了,以尽量展示 SDK 常用的功能,但也显得臃肿。在实际编写代码使用 SDK 的时候,应尽量简化。
38
39## 简化版
40
41```go
42package main
43
44import (
45	"fmt"
46	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
47	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
48	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
49	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/regions"
50	cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312"
51)
52
53func main() {
54	credential := common.NewCredential("secretId", "secretKey")
55	client, _ := cvm.NewClient(credential, regions.Guangzhou, profile.NewClientProfile())
56
57	request := cvm.NewDescribeInstancesRequest()
58	response, err := client.DescribeInstances(request)
59
60	if _, ok := err.(*errors.TencentCloudSDKError); ok {
61		fmt.Printf("An API error has returned: %s", err)
62		return
63	}
64	if err != nil {
65		panic(err)
66	}
67	fmt.Printf("%s\n", response.ToJsonString())
68}
69```
70
71
72
73
74
75```go
76package main
77
78import (
79        "fmt"
80
81        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
82        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
83        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
84        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/regions"
85        cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312"
86)
87
88func main() {
89        // 必要步骤:
90        // 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
91        // 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
92        // 以免泄露密钥对危及你的财产安全。
93        credential := common.NewCredential("secretId", "secretKey")
94
95        // 非必要步骤
96        // 实例化一个客户端配置对象,可以指定超时时间等配置
97        cpf := profile.NewClientProfile()
98        // SDK默认使用POST方法。
99        // 如果你一定要使用GET方法,可以在这里设置。GET方法无法处理一些较大的请求。
100        // 如非必要请不要修改默认设置。
101        cpf.HttpProfile.ReqMethod = "POST"
102        // SDK有默认的超时时间,如非必要请不要修改默认设置。
103        // 如有需要请在代码中查阅以获取最新的默认值。
104        cpf.HttpProfile.ReqTimeout = 30
105        // SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务,
106        // 则必须手动指定域名,例如云服务器的上海金融区域名: cvm.ap-shanghai-fsi.tencentcloudapi.com
107        cpf.HttpProfile.Endpoint = "cvm.tencentcloudapi.com"
108        // SDK默认用HmacSHA256进行签名,它更安全但是会轻微降低性能。
109        // 如非必要请不要修改默认设置。
110        cpf.SignMethod = "HmacSHA1"
111        // SDK 默认用 zh-CN 调用返回中文。此外还可以设置 en-US 返回全英文。
112        // 但大部分产品或接口并不支持全英文的返回。
113        // 如非必要请不要修改默认设置。
114        cpf.Language = "en-US"
115        //打印日志,默认是false
116        // cpf.Debug = true
117
118
119        // 实例化要请求产品(以cvm为例)的client对象
120        // 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
121        client, _ := cvm.NewClient(credential, regions.Guangzhou, cpf)
122        // 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
123        // 你可以直接查询SDK源码确定DescribeInstancesRequest有哪些属性可以设置,
124        // 属性可能是基本类型,也可能引用了另一个数据结构。
125        // 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明。
126        request := cvm.NewDescribeInstancesRequest()
127
128        // 基本类型的设置。
129        // 此接口允许设置返回的实例数量。此处指定为只返回一个。
130        // SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
131        // SDK提供对基本类型的指针引用封装函数
132        request.Limit = common.Int64Ptr(1)
133
134        // 数组类型的设置。
135        // 此接口允许指定实例 ID 进行过滤,但是由于和接下来要演示的 Filter 参数冲突,先注释掉。
136        // request.InstanceIds = common.StringPtrs([]string{"ins-r8hr2upy"})
137
138        // 复杂对象的设置。
139        // 在这个接口中,Filters是数组,数组的元素是复杂对象Filter,Filter的成员Values是string数组。
140        request.Filters = []*cvm.Filter{
141            &cvm.Filter{
142                Name: common.StringPtr("zone"),
143                Values: common.StringPtrs([]string{"ap-guangzhou-1"}),
144            },
145        }
146
147        // 通过client对象调用想要访问的接口,需要传入请求对象
148        response, err := client.DescribeInstances(request)
149        // 处理异常
150        if _, ok := err.(*errors.TencentCloudSDKError); ok {
151            fmt.Printf("An API error has returned: %s", err)
152            return
153        }
154        // 非SDK异常,直接失败。实际代码中可以加入其他的处理。
155        if err != nil {
156            panic(err)
157        }
158        // 打印返回的json字符串
159        fmt.Printf("%s\n", response.ToJsonString())
160}
161```
162
163更多示例参见 [examples](https://github.com/TencentCloud/tencentcloud-sdk-go/tree/master/examples) 目录。对于复杂接口的 Request 初始化例子,可以参考 examples/cvm/v20170312/run_instances.go 。对于使用json字符串初始化 Request 的例子,可以参考 examples/cvm/v20170312/describe_instances.go164
165# 相关配置
166
167## 代理
168
169如果是有代理的环境下,需要设置系统环境变量 `https_proxy` ,否则可能无法正常调用,抛出连接超时的异常。
170
171## 开启 DNS 缓存
172
173当前 GO SDK 总是会去请求 DNS 服务器,而没有使用到 nscd 的缓存,可以通过导出环境变量`GODEBUG=netdns=cgo`,或者`go build`编译时指定参数`-tags 'netcgo'`控制读取 nscd 缓存。
174
175## 忽略服务器证书校验
176
177虽然使用 SDK 调用公有云服务时,必须校验服务器证书,以识破他人伪装的服务器,确保请求的安全。
178但是某些极端情况下,例如测试时,你可能会需要忽略自签名的服务器证书。
179以下是其中一种可能的方法:
180
181```
182import "crypto/tls"
183...
184    client, _ := cvm.NewClient(credential, regions.Guangzhou, cpf)
185    tr := &http.Transport{
186        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
187    }
188    client.WithHttpTransport(tr)
189...
190```
191
192再次强调,除非你知道自己在做什么,并明白由此带来的风险,否则不要尝试关闭服务器证书校验。
193
194# 支持产品列表
195
196参见[产品列表文档](./products.md)
197