Go SDK使用指导
本章节介绍了Go SDK的使用说明,您可以参考本章节进行快速集成开发。
安装SDK
视频直播服务端Go SDK支持go 1.14及以上版本。执行go version检查当前Go的版本信息。
使用go get安装华为云Go SDK,执行如下命令安装华为云Go SDK库以及相关依赖库,具体的SDK版本号请参见SDK开发中心。
1 2 3 4 | # 安装华为云Go库
go get github.com/huaweicloud/huaweicloud-sdk-go-v3
# 安装依赖
go get github.com/json-iterator/go
|
开始使用
- 导入依赖模块。
1 2 3 4 5 6 7 8 9
import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/config" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/httphandler" live "github.com/huaweicloud/huaweicloud-sdk-go-v3/tree/master/services/live/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/tree/master/services/live/model" "net/http" )
- 配置客户端属性。
- 默认配置
1 2
# Use default configuration httpConfig := config.DefaultHttpConfig()
- 代理配置(可选)。
1 2 3 4 5 6 7
// 根据需要配置网络代理 httpConfig.WithProxy(config.NewProxy(). WithSchema("http"). WithHost("proxy.huaweicloud.com"). WithPort(80). WithUsername("testuser"). WithPassword("password"))))
- 连接配置(可选)
1
httpConfig.WithTimeout(30);
- SSL配置(可选)
1 2
// 根据需要配置是否跳过SSL证书校验 httpConfig.WithIgnoreSSLVerification(true);
- 默认配置
- 初始化认证信息。
支持两种方式认证,您可以根据实际情况进行选择。
- 使用永久AK/SK
首先需要获取永久AK和SK,以及projectId,您可以参考开发前准备获取。
1 2 3 4 5
auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build()
- 使用临时AK/SK
首先需要获取临时AK、SK和SecurityToken,您可以通过token获取或者通过委托授权获取。
1 2 3 4 5 6
auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). WithSecurityToken(securityToken). Build()
相关参数说明如下所示:- ak:华为云账号Access Key。
- sk:华为云账号Secret Access Key 。
- projectId:云服务所在项目ID ,根据您需要操作的项目所属区域选择对应的项目ID 。
- securityToken:采用临时AK/SK认证场景下的安全票据。
- 使用永久AK/SK
- 初始化客户端。
1 2 3 4 5 6 7
# 初始化直播服务的客户端 client := live.NewLiveAPIClient( live.LiveAPIClientBuilder(). WithEndpoint(endpoint). WithCredential(auth). WithHttpConfig(config.DefaultHttpConfig()). Build())
endpoint:直播服务应用区域和各服务的终端节点,具体请参见地区和终端节点。
- 发送请求并查看响应。
1 2 3 4 5 6 7 8 9 10
// 初始化请求,以调用接口查询直播转码模板为例 request := &model.ShowTranscodingsTemplateRequest{ Domain: "play.example.huaweicloud.com", } response, err := client.ShowTranscodingsTemplate(request) if err == nil { fmt.Printf("%+v\n",response) } else { fmt.Println(err) }
- 异常处理。
表1 异常处理 一级分类
一级分类说明
ServiceResponseError
service response error
url.Error
connect endpoint error
1 2 3 4 5 6 7
# 异常处理 response, err := client.ShowTranscodingsTemplate(request) if err == nil { fmt.Println(response) } else { fmt.Println(err) }
- 原始Http侦听器。
在某些场景下可能对业务发出的Http请求进行Debug,需要看到原始的Http请求和返回信息,SDK提供侦听器功能获取原始的和加密的Http请求和返回信息。
原始信息打印仅在debug阶段使用,请不要在生产系统中将原始的Http头和Body信息打印到日志,这些信息并未加密且其中包含敏感数据;当Body体为二进制内容,即Content-Type标识为二进制时body为"***",详细内容不输出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
func RequestHandler(request http.Request) { fmt.Println(request) } func ResponseHandler(response http.Response) { fmt.Println(response) } client := live.NewLiveAPIClient( live.LiveAPIClientBuilder(). WithEndpoint("{your endpoint}"). WithCredential( basic.NewCredentialsBuilder(). WithAk("{your ak string}"). WithSk("{your sk string}"). WithProjectId("{your project id}"). Build()). WithHttpConfig(config.DefaultHttpConfig(). WithIgnoreSSLVerification(true). WithHttpHandler(httphandler. NewHttpHandler(). AddRequestHandler(RequestHandler). AddResponseHandler(ResponseHandler))). Build())
代码示例
调用前请根据实际情况替换如下变量: {your ak string}、{your sk string}、{your endpoint string} 以及 {your project id}。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package main
import (
"fmt"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/config"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/httphandler"
live "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/live/v1"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/live/v1/model"
"net/http"
)
func RequestHandler(request http.Request) {
fmt.Println(request)
}
func ResponseHandler(response http.Response) {
fmt.Println(response)
}
func main() {
client := live.NewLiveAPIClient(
live.LiveAPIClientBuilder().
WithEndpoint("{your endpoint}").
WithCredential(
basic.NewCredentialsBuilder().
WithAk("{your ak string}").
WithSk("{your sk string}").
WithProjectId("{your project id}").
Build()).
WithHttpConfig(config.DefaultHttpConfig().
WithIgnoreSSLVerification(true).
WithHttpHandler(httphandler.
NewHttpHandler().
AddRequestHandler(RequestHandler).
AddResponseHandler(ResponseHandler))).
Build())
request := &model.ShowTranscodingsTemplateRequest{
Domain: "play.example.huaweicloud.com",
}
response, err := client.ShowTranscodingsTemplate(request)
if err == nil {
fmt.Println("%+v\n",response)
} else {
fmt.Println(err)
}
}
|
