Go SDK使用指导
本章节介绍了Go SDK的使用说明,您可以参考本章节进行快速集成开发。
开发前准备
- 已注册华为账号并开通华为云,完成实名认证。
      国际站和欧洲站用户在以下情况下需要进行账号实名认证。 - 根据中国大陆相关法规要求,购买和使用中国大陆节点云产品服务的用户需要实名认证。
- 购买视频直播服务时,如果您选择的区域包含中国大陆,则需要实名认证。
 
- 具备已备案的域名用于直播推流和播放,并在视频直播控制台添加推流和播放域名,且已完成域名关联。
- 已具备开发环境 ,支持go 1.14及以上版本。
- 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台页面上创建和查看您的AK/SK。具体请参见访问密钥。
- 已获取直播服务对应区域的项目ID,请在华为云控制台页面上查看项目ID。具体请参见API凭证。
安装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 10 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" "os" ) 
- 配置客户端属性。
    
    - 默认配置
      1 2 # Use default configuration httpConfig := config.DefaultHttpConfig() 
- (可选操作)配置代理。
      1 2 3 4 5 6 7 8 9 // 根据需要配置网络代理 // 代理服务器的password直接写入代码,会有很大安全风险。建议密文形式存储在配置文件或者环境变量中,待使用时再解密,以确保安全。 // 代理配置设置前,请先在本地环境中设置环境变量PROXY_PASSWORD httpConfig.WithProxy(config.NewProxy(). WithSchema("http"). WithHost("proxy.huaweicloud.com"). WithPort(80). WithUsername("testuser"). WithPassword(os.Getenv("PROXY_PASSWORD"))) 
- (可选操作)配置连接。
      1httpConfig.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.NewLiveClient( live.LiveClientBuilder(). WithEndpoints(endpoints). 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为"***",详细内容不输出。 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 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(). WithEndpoints([]string{"{your endpoint}"}). WithCredential( basic.NewCredentialsBuilder(). WithAk(os.Getenv("HUAWEICLOUD_SDK_AK")). WithSk(os.Getenv("HUAWEICLOUD_SDK_SK")). WithProjectId("{your project id}"). Build()). WithHttpConfig(config.DefaultHttpConfig(). WithIgnoreSSLVerification(true). WithHttpHandler(httphandler. NewHttpHandler(). AddRequestHandler(RequestHandler). AddResponseHandler(ResponseHandler))). Build()) 
代码示例
调用前请根据实际情况替换如下变量:{your endpoint} 以及 {your project id}。
认证用的AK、SK直接写入代码,会有很大安全风险,建议密文形式存放在配置文件或者环境变量中,待使用时再解密,以确保安全。
本示例以AK、SK保存在环境变量中为例。运行本示例前,请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
| 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 49 | 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" "os" ) func RequestHandler(request http.Request) { fmt.Println(request) } func ResponseHandler(response http.Response) { fmt.Println(response) } func main() { client := live.NewLiveAPIClient( live.LiveAPIClientBuilder(). WithEndpoints([]string{"{your endpoint}"}). WithCredential( basic.NewCredentialsBuilder(). WithAk(os.Getenv("HUAWEICLOUD_SDK_AK")). WithSk(os.Getenv("HUAWEICLOUD_SDK_SK")). 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) } } | 
 
    