以1个具体接口为例来展示Windows下腾讯云GO SDK的使用

2024-09-18 18:40:57 浏览数 (2)

一、下载安装

建议先阅读下https://golang.org/doc/install,不读直接向下走也可以

https://golang.org/dl/

https://golang.google.cn/dl/

上面2个地址二选一,下载.msi安装包

具体下载哪个版本,我也不清楚,参考https://cloud.tencent.com/developer/article/1836994,建议1.16.x版本

1.10.8是个特殊版本,Go 1.10.x 不再支持 10.3 以下版本的 FreeBSD 和 8.0 以下版本的 NetBSD。并且,这个版本也是支持 OpenBSD 6.0、OS X 10.9 以及 Windows XP 和 Windows Vista 的最后一个版本(1.10.8)。而腾讯云GO SDK需要Go 1.9 版本及以上。

https://dl.google.com/go/go1.10.8.windows-386.msi

https://dl.google.com/go/go1.10.8.windows-amd64.msi

https://golang.google.cn/dl/go1.16.15.windows-386.msi

https://golang.google.cn/dl/go1.16.15.windows-amd64.msi

安装很简单,一直下一步→下一步……直到结束,全部采用默认设置。

安装完成后打开CMD命令行执行go env和go version

注意看GOPATH默认是C:UsersAdministratorgo

实际查看不存在C:UsersAdministratorgo,需要执行mkdir C:UsersAdministratorgo创建出来

二、编辑器的选用

①cmd命令行

上图echo. > hello.go是创建一个空文件hello.go出来,notepad hello.go是用记事本打开这个空文件,然后填入如下代码

package main

import "fmt"

func main() {

fmt.Printf("hello, worldn")

}

上面fmt.Printf("hello, worldn")用fmt.Println("hello, world")也可以

注意,如上图如果把main()后面的{换行会报错,这是go的语法,必须把{跟在函数名()后面

关于编译:

1)go build -o .exe目标文件路径 .go源代码文件路径,例如go build -o c:hello.exe hello.go

go build命令可以将Go语言程序代码编译成二进制的可执行文件,但是需要我们手动运行该二进制文件

2)go run .go源代码文件路径,例如go run hello.go

go run命令则更加方便,它会在编译后直接运行Go语言程序,编译过程中会产生一个临时文件,但不会生成可执行文件,这个特点很适合用来调试程序

②notepad (简称npp,官网notepad-plus-plus.org )

≤Go 1.10.8的版本配合notepad 6.9的GOnpp插件(>6.9版本的npp没有这个插件),可以直接在npp里进行调试。

插件安装:浏览器访问http://sourceforge.net/projects/gonpp/files/GOnpp_1.2_UNI.zip/download跳转到下面的链接

https://nchc.dl.sourceforge.net/project/gonpp/GOnpp_1.2_UNI.zip

解压GOnpp_1.2_UNI.zip把GOnpp.dll放到notepad 安装目录里的plugins目录里即可

三、给notepad 安装go语言插件让关键词高亮显示

上图里的关键字高亮效果就是按如下步骤配置的

①下载notepad 的golang支持包,下载地址:

http://notepad-plus.sourceforge.net/commun/userDefinedLang/go.zip

②解压go.zip,目录中有2个文件userDefineLang_Go.xml和go.xml

③把go.xml复制到notepad 目录的pluginsAPIs文件夹中,如果没有APIs文件夹,自己创建一个

④打开userDefineLang_Go.xml文件,去掉文件第一行和最后一行的注释,注意是去掉注释不是删除那一行

然后“语言”→“自定义语言”→“自定义语言格式”→“导入”,选择userDefineLang_Go.xml导入并重新打开notepad

四、使用GO SDK调用DescribeCdnDomainLogs接口

①根据前三步准备好环境

②阅读文档https://cloud.tencent.com/document/sdk/Go

③下载源码

我用了两个版本

github.com/tencentcloud/tencentcloud-sdk-go v3.0.71 incompatible

以及

github.com/tencentcloud/tencentcloud-sdk-go v3.0.233 incompatible

v3.0.71的调用RunInstances接口时报错如下

sdk会不定期更新,更新后,可能之前的代码跑的时候一些参数就不被正确识别了,得更新sdk到最新版,我在python sdk里也遇到过类似问题

下载SDK,可以直接在github下载.zip包

https://github.com/TencentCloud/tencentcloud-sdk-go/releases

解压到C:Gosrcgithub.comtencentcloud 目录,把sdk文件夹重命名为tencentcloud-sdk-go,使路径跟api explorer生成的代码路径一致,确保循着路径能找到common、common/errors、common/profile

也可以用go get 配代理下载github上的东西会快一些

首先需要安装windows git,否则会报错

Git安装文件下载地址:https://git-scm.com/download/win

安装过程这里不赘述,可以百度下。

安装好git后再安装下windows go,下载安装go1.16.15.windows-amd64.msi

然后执行go env查看是没有启用GO111MODULE的,GOPROXY也不是我们要的地址,此时可以执行命令设置成我们需要的

代码语言:javascript复制
我安装环境一直卡着不动,后来查资料才解决
安装好go后,需要设置GO111MODULE和GOPROXY,才能使用go get快速把sdk下载下来

内网使用内网域名mirrors.tencentyun.com
set GO111MODULE=on
set GOPROXY=http://mirrors.tencentyun.com/go/
go get -u -v github.com/tencentcloud/tencentcloud-sdk-go

上面命令只在当前命令窗口生效,要永久生效得用这2行命令
go env -w GO111MODULE=on
go env -w GOPROXY=http://mirrors.tencentyun.com/go/,direct

公网使用公网域名mirrors.tencent.com
set GO111MODULE=on
set GOPROXY=http://mirrors.tencent.com/go/
go get -u -v github.com/tencentcloud/tencentcloud-sdk-go

上面命令只在当前命令窗口生效,要永久生效得用这2行命令
go env -w GO111MODULE=on
go env -w GOPROXY=http://mirrors.tencent.com/go/,direct


下载的东西在C:UsersAdministratorgopkgmodgithub.com目录里


go get不加 -v参数,看不到过程

go get -u -v github.com/tencentcloud/tencentcloud-sdk-go 拉下来的东西,从v1.0.170版本开始,在examples同级目录没有tecentcloud目录了,因为v1.0.170开始 ,只需下载基础包和对应的产品包(如cvm)即可,不需要下载全部的产品:

1. 安装公共基础包:

        ```

        go get -v github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common@latest

        ```

2. 安装对应的产品包(如cvm): 

        ```

        go get -v github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm@latest

        ```

下载下来的东西在C:UsersAdministratorgopkgmodgithub.comtencentcloud 目录,其中带版本号的子目录里面有examples目录,是只读的,编辑不了,需要先去掉只读

下载下来的东西在C:UsersAdministratorgopkgmodgithub.comtencentcloud 目录,其中带版本号的子目录里面有examples目录,是只读的,编辑不了,需要先去掉只读

下载下来的东西在C:UsersAdministratorgopkgmodgithub.comtencentcloud 目录,其中带版本号的子目录里面有examples目录,是只读的,编辑不了,需要先去掉只读

需要注意的是,如果不执行go env -w "GOFLAGS"="-mod=mod" ,go build的时候会出现missing go.sum entry...的报错

需要注意的是,如果不执行go env -w "GOFLAGS"="-mod=mod" ,go build的时候会出现missing go.sum entry...的报错

需要注意的是,如果不执行go env -w "GOFLAGS"="-mod=mod" ,go build的时候会出现missing go.sum entry...的报错

④在examples目录创建cdn目录,在cdn目录创建v20180606目录,并通过api explorer工具准备好DescribeCdnDomainLogs.go放入v20180606目录。

https://console.cloud.tencent.com/api/explorer?Product=cdn&Version=2018-06-06&Action=DescribeCdnDomainLogs

⑤cd C:UsersAdministratorgosrcgithub.comtencentcloudtencentcloud-sdk-goexamplescdnv20180606

⑥分别执行go build DescribeCdnDomainLogs.go和DescribeCdnDomainLogs.exe

或者直接执行go run DescribeCdnDomainLogs.go即可

五、在DescribeCdnDomainLogs.go的代码基础上改成一个web程序

import里多了"net/http"和"log",主体部分多了http.HandleFunc( )和http.ListenAndServe( )

如下代码可复制

package main

import (

"fmt"

"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"

cdn "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn/v20180606"

"net/http"

"log"

)

func main(){

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){

原main(){$代码}的“$代码”塞在这里,并注释最后一句话,即//fmt.Printf("%s", response.ToJsonString())

fmt.Println("hello, your request path is:", r.URL.Path)//打印浏览器请求路径

fmt.Fprintf(w,"hello, your request result is : %sn",response.ToJsonString())//输出请求接口的结果

})

err := http.ListenAndServe(":9090", nil) //设置监听的端口

if err != nil {

log.Fatal("ListenAndServe: ", err)

}

}

改造完以后保存为web.go,跟DescribeCdnDomainLogs.go放在同一目录,执行go build web.go,然后运行web.exe后另开一个cmd命令行执行netstat -ano|findstr 9090查看监听成功了,然后再打开浏览器访问http://127.0.0.1:9090/test就可以看到请求接口的结果,同时会在运行web.exe的命令行显示浏览器请求的URL后半部分路径,别的路径也行,比如http://127.0.0.1:9090/ceshi。

由于是监听在0.0.0.0:9090上的,所以通过外网IP也可以访问

0 人点赞