日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Go SDK使用說明

物聯(lián)網(wǎng)平臺提供Go語言的云端SDK供開發(fā)人員使用。本文介紹云端Go SDK的安裝和配置,以及使用Go SDK調(diào)用云端API的示例。

安裝SDK

  1. 安裝Go開發(fā)環(huán)境。

    目前支持Go 1.13.0及以上版本。請訪問Go官網(wǎng)獲取。

  2. Go安裝完畢后,新建系統(tǒng)變量GOPATH,并將其指向您的代碼目錄。

    了解更多GOPATH相關(guān)信息,請執(zhí)行命令go help gopath

  3. 執(zhí)行以下命令安裝阿里云Go SDK,通過Go mod來管理項目依賴。

    重要
    • 以下命令安裝的SDK版本為示例值,最新版本信息,請參見OpenAPI門戶物聯(lián)網(wǎng)平臺的SDK安裝方式。Go SDK的歷史版本信息,請參見SDK的Code

      了解Go SDK詳細(xì)信息,請訪問alibabacloud-go-sdk

    • Go SDK安裝路徑默認(rèn)為 $GOPATH/src/github.com/alibabacloud-go/iot-20180120,$GOPATH可以通過命令go env GOPATH查看。

      若Go SDK依賴包缺少,可執(zhí)行命令go mod tidy拉取。

    go get github.com/alibabacloud-go/iot-20180120/v6

初始化SDK

  1. 創(chuàng)建對象config,存放SDK初始化信息(AccessKey IDAccessKey Secret、地域ID等)。

  2. 通過iot.NewClient(config)方法加載SDK信息,創(chuàng)建客戶端實例,完成SDK客戶端初始化。

以華東2(上海)地域及其服務(wù)接入地址為例,初始代碼如下。實際場景設(shè)置中,需使用您的物聯(lián)網(wǎng)平臺服務(wù)所在地域。

import (
  "encoding/json"
  "strings"
  "fmt"
  "os"
  iot20180120  "github.com/alibabacloud-go/iot-20180120/v6/client"
  openapi  "github.com/alibabacloud-go/darabonba-openapi/v2/client"
  util  "github.com/alibabacloud-go/tea-utils/v2/service"
  "github.com/alibabacloud-go/tea/tea"
)


/**
 * 使用AK&SK初始化賬號Client
 * @param accessKeyId
 * @param accessKeySecret
 * @return Client
 * @throws Exception
 */
func CreateClient (accessKeyId *string, accessKeySecret *string) (_result *iot20180120.Client, _err error) {
  config := &openapi.Config{
    // 必填,您的 AccessKey ID
    AccessKeyId: accessKeyId,
    // 必填,您的 AccessKey Secret
    AccessKeySecret: accessKeySecret,
  }
  // Endpoint 請參考 https://api.aliyun.com/product/Iot
  config.Endpoint = tea.String("iot.cn-shanghai.aliyuncs.com")
  _result = &iot20180120.Client{}
  _result, _err = iot20180120.NewClient(config)
  return _result, _err
}

func _main (args []*string) (_err error) {
  // 請確保代碼運行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
  // 工程代碼泄露可能會導(dǎo)致 AccessKey 泄露,并威脅賬號下所有資源的安全性。以下代碼示例使用環(huán)境變量獲取 AccessKey 的方式進(jìn)行調(diào)用,僅供參考,建議使用更安全的 STS 方式
  client, _err := CreateClient(tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")), tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")))
  if _err != nil {
    return _err
  }
  
  ......
}

參數(shù)

說明

accessKeyId

您阿里云賬號的AccessKey ID。

您可在阿里云官網(wǎng)控制臺AccessKey管理中創(chuàng)建或查看您的AccessKey。

accessKeySecret

您阿里云賬號的AccessKey Secret

RegionId

您的物聯(lián)網(wǎng)平臺服務(wù)的地域ID,用于拼接服務(wù)接入地址,格式為:iot.${RegionId}.aliyuncs.com。

您可在物聯(lián)網(wǎng)平臺控制臺左上方,查看當(dāng)前服務(wù)所在地域。

地域ID的表達(dá)方法,請參見地域和可用區(qū)

SDK客戶端的HTTP請求配置、代理配置、超時機(jī)制、重試機(jī)制等配置方式,請參見V2.0 Go SDK

重要

為避免將AccessKey硬編碼到業(yè)務(wù)代碼中帶來的安全風(fēng)險,可采用配置環(huán)境變量的方法管理AccessKey。

您需在本地操作系統(tǒng)中添加環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET,并分別寫入已準(zhǔn)備好的AccessKey ID和AccessKey Secret。

在示例代碼中可以通過以下方法獲取:

  • os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")

  • os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")

更多鑒權(quán)訪問方式,請參見管理訪問憑證

發(fā)起調(diào)用

物聯(lián)網(wǎng)平臺云端SDK為每個API封裝兩個類,分別命名為${API名稱}+"Request"${API名稱}+"Response",分別用于承載API的調(diào)用請求和調(diào)用結(jié)果。

調(diào)用步驟

  1. 已完成SDK客戶端初始化。具體內(nèi)容,請參見初始化SDK

  2. 創(chuàng)建對應(yīng)API的調(diào)用請求,生成${API名稱}+"Request"類對象實例request

  3. 通過對象實例request,使用request.${請求參數(shù)的名稱}方法,設(shè)置API所需的請求參數(shù)值。

  4. 創(chuàng)建${API名稱}+"Response"類的對象實例response承載響應(yīng)結(jié)果:使用Client對象實例client${API名稱}(request)方法,獲取API對應(yīng)request的響應(yīng)結(jié)果,包含服務(wù)端響應(yīng)的bodyheaders

物聯(lián)網(wǎng)平臺云端API,請參見API列表。有關(guān)request中請求參數(shù)說明,及response中返回參數(shù)說明,請參見對應(yīng)API文檔。

本文以調(diào)用Pub接口發(fā)布消息到Topic為例。請求參數(shù)信息,請參見Pub

重要

以下代碼中iotInstanceId為實例ID。實例的詳細(xì)說明,請參見實例概述

購買實例方法,請參見購買企業(yè)版實例

獲取實例ID方法,請參見物聯(lián)網(wǎng)平臺實例相關(guān)問題

	pubRequest := &iot20180120.PubRequest{
		ProductKey:     tea.String("${productKey}"),
		IotInstanceId:  tea.String("${iotInstanceId}"),
		DeviceName:     tea.String("${deviceName}"),
		TopicFullName:  tea.String("/${productKey}/${deviceName}/user/get"),
		MessageContent: tea.String("eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0="),
	}
	runtime := &util.RuntimeOptions{}
	tryErr := func() (_e error) {
		defer func() {
			if r := tea.Recover(recover()); r != nil {
				_e = r
			}
		}()
		resp, _err := client.PubWithOptions(pubRequest, runtime)
		if _err != nil {
			return _err
		}

		console.Log(util.ToJSONString(resp))

		return nil
	}()

完整代碼示例

說明

實際場景中,請參照上文的參數(shù)說明,替換對應(yīng)參數(shù)值。

// This file is auto-generated, don't edit it. Thanks.
package main

import (
  "encoding/json"
  "strings"
  "fmt"
  "os"
  iot20180120  "github.com/alibabacloud-go/iot-20180120/v6/client"
  openapi  "github.com/alibabacloud-go/darabonba-openapi/v2/client"
  util  "github.com/alibabacloud-go/tea-utils/v2/service"
  "github.com/alibabacloud-go/tea/tea"
)


/**
 * 使用AK&SK初始化賬號Client
 * @param accessKeyId
 * @param accessKeySecret
 * @return Client
 * @throws Exception
 */
func CreateClient (accessKeyId *string, accessKeySecret *string) (_result *iot20180120.Client, _err error) {
  config := &openapi.Config{
    // 必填,您的 AccessKey ID
    AccessKeyId: accessKeyId,
    // 必填,您的 AccessKey Secret
    AccessKeySecret: accessKeySecret,
  }
  // Endpoint 請參考 https://api.aliyun.com/product/Iot
  config.Endpoint = tea.String("iot.cn-shanghai.aliyuncs.com")
  _result = &iot20180120.Client{}
  _result, _err = iot20180120.NewClient(config)
  return _result, _err
}

func _main (args []*string) (_err error) {
  // 請確保代碼運行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
  // 工程代碼泄露可能會導(dǎo)致 AccessKey 泄露,并威脅賬號下所有資源的安全性。以下代碼示例使用環(huán)境變量獲取 AccessKey 的方式進(jìn)行調(diào)用,僅供參考,建議使用更安全的 STS 方式
  client, _err := CreateClient(tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")), tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")))
  if _err != nil {
    return _err
  }

  pubRequest := &iot20180120.PubRequest{
    // 產(chǎn)品ProductKey。
    ProductKey: tea.String("${productKey}"),
    // 物聯(lián)網(wǎng)平臺實例ID。
    IotInstanceId: tea.String("${iotInstanceId}"),
    DeviceName: tea.String("${deviceName}"),
    // 要接收消息的設(shè)備的自定義Topic。
    TopicFullName: tea.String("/${productKey}/${deviceName}/user/get"),
    // 要發(fā)送的消息主體:{"test":"task pub broadcast"}
    MessageContent: tea.String("eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0="),
  }
  runtime := &util.RuntimeOptions{}
  tryErr := func()(_e error) {
    defer func() {
      if r := tea.Recover(recover()); r != nil {
        _e = r
      }
    }()
    // 復(fù)制代碼運行請自行打印 API 的返回值
    _, _err = client.PubWithOptions(pubRequest, runtime)
    if _err != nil {
      return _err
    }

    return nil
  }()

  if tryErr != nil {
    var error = &tea.SDKError{}
    if _t, ok := tryErr.(*tea.SDKError); ok {
      error = _t
    } else {
      error.Message = tea.String(tryErr.Error())
    }
    // 此處僅做打印展示,請謹(jǐn)慎對待異常處理,在工程項目中切勿直接忽略異常。
    // 錯誤 message
    fmt.Println(tea.StringValue(error.Message))
    // 診斷地址
    var data interface{}
    d := json.NewDecoder(strings.NewReader(tea.StringValue(error.Data)))
    d.Decode(&data)
    if m, ok := data.(map[string]interface{}); ok {
      recommend, _ := m["Recommend"]
      fmt.Println(recommend)
    }
    _, _err = util.AssertAsString(error.Message)
    if _err != nil {
      return _err
    }
  }
  return _err
}


func main() {
  err := _main(tea.StringSlice(os.Args[1:]))
  if err != nil {
    panic(err)
  }
}

附錄:示例代碼

前往物聯(lián)網(wǎng)平臺云端SDK示例中心查看或下載API調(diào)用的示例代碼。示例代碼中包含Java、Python、PHP、Node.js、Go、C++和.NET等版本SDK示例。

阿里云OpenAPI開發(fā)者門戶提供API在線調(diào)試工具。在API調(diào)試頁面,您可以快速檢索和體驗調(diào)用API。系統(tǒng)會根據(jù)您輸入的參數(shù)同步生成各語言SDK的代碼示例。各語言SDK代碼示例顯示在頁面右側(cè)SDK示例頁簽下供您參考。在調(diào)用結(jié)果頁簽下,可查看API調(diào)用的真實請求URL和JSON格式的返回結(jié)果。