首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >以1个具体接口为例来展示Windows下腾讯云GO SDK的使用

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

原创
作者头像
Windows技术交流
修改2022-07-26 16:48:25
1.2K0
修改2022-07-26 16:48:25
举报
文章被收录于专栏:Windows技术交流Windows技术交流

一、下载安装

建议先阅读下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:\Users\Administrator\go

实际查看不存在C:\Users\Administrator\go,需要执行mkdir C:\Users\Administrator\go创建出来

二、编辑器的选用

①cmd命令行

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

package main

import "fmt"

func main() {

fmt.Printf("hello, world\n")

}

上面fmt.Printf("hello, world\n")用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++目录的\plugins\APIs文件夹中,如果没有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:\Go\src\github.com\tencentcloud\ 目录,把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也不是我们要的地址,此时可以执行命令设置成我们需要的

我安装环境一直卡着不动,后来查资料才解决
安装好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:\Users\Administrator\go\pkg\mod\github.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:\Users\Administrator\go\pkg\mod\github.com\tencentcloud 目录,其中带版本号的子目录里面有examples目录,是只读的,编辑不了,需要先去掉只读

下载下来的东西在C:\Users\Administrator\go\pkg\mod\github.com\tencentcloud 目录,其中带版本号的子目录里面有examples目录,是只读的,编辑不了,需要先去掉只读

下载下来的东西在C:\Users\Administrator\go\pkg\mod\github.com\tencentcloud 目录,其中带版本号的子目录里面有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:\Users\Administrator\go\src\github.com\tencentcloud\tencentcloud-sdk-go\examples\cdn\v20180606

⑥分别执行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 : %s\n",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也可以访问

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、下载安装
  • 二、编辑器的选用
    • ①cmd命令行
      • ②notepad++(简称npp,官网notepad-plus-plus.org )
      • 三、给notepad++安装go语言插件让关键词高亮显示
      • 四、使用GO SDK调用DescribeCdnDomainLogs接口
      • 五、在DescribeCdnDomainLogs.go的代码基础上改成一个web程序
      相关产品与服务
      云服务器
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档