All Products
Search
Document Center

IoT Platform:Gunakan IoT Platform SDK untuk Go

Last Updated:Jul 06, 2025

IoT Platform menyediakan SDK untuk Go. Dokumen ini menjelaskan cara menginstal dan mengonfigurasi IoT Platform SDK untuk Go serta memberikan contoh kode untuk memanggil operasi API dari IoT Platform menggunakan SDK.

Instal IoT Platform SDK untuk Go

  1. Instal Go.

    SDK untuk Go memerlukan versi 1.13.0 atau yang lebih baru. Unduh paket instalasi Go dari situs resmi Go dan instal Go.

  2. Setelah menginstal Go, buat variabel sistem bernama GOPATH dan atur nilainya ke direktori kode Anda.

    Untuk informasi lebih lanjut tentang variabel GOPATH, jalankan perintah go help gopath.

  3. Jalankan perintah berikut untuk menginstal Alibaba Cloud SDK untuk Go. Gunakan perintah go mod untuk mengelola dependensi.

    Catatan

    • Secara default, perintah berikut menginstal versi terbaru SDK. Jika ingin menginstal versi tertentu, tambahkan nomor versi di akhir perintah, seperti @v3.0.0. Untuk informasi tentang versi historis SDK untuk Go, lihat Kode SDK.

      Untuk informasi lebih lanjut tentang IoT Platform SDK untuk Go, kunjungi alibabacloud-go-sdk.

    • Secara default, IoT Platform SDK untuk Go diinstal di direktori $GOPATH/src/github.com/alibabacloud-go/iot-20180120. Jalankan perintah go env GOPATH untuk mendapatkan nilai $GOPATH.

      Jika ada dependensi yang tidak tersedia di IoT Platform SDK untuk Go, jalankan perintah go mod tidy untuk menarik dependensi tersebut.

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

Inisialisasi IoT Platform SDK untuk Go

  1. Buat objek config untuk menyimpan informasi inisialisasi SDK, seperti AccessKey ID, AccessKey secret, dan ID wilayah.

  2. Panggil metode iot.NewClient(config) untuk memuat informasi SDK dan membuat instance klien. Dengan ini, SDK diinisialisasi.

Sebagai contoh, jika ingin menggunakan SDK di wilayah Tiongkok (Shanghai), gunakan kode berikut untuk menginisialisasi SDK. Di lingkungan produksi, pilih wilayah tempat IoT Platform diaktifkan.

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


/**
 * Inisialisasi Client dengan AccessKey dari akun
 * @param accessKeyId
 * @param accessKeySecret
 * @return Client
 * @throws Exception
 */
func CreateClient (accessKeyId *string, accessKeySecret *string) (_result *iot20180120.Client, _err error) {
  config := &openapi.Config{
    // Diperlukan, AccessKey ID Anda
    AccessKeyId: accessKeyId,
    // Diperlukan, AccessKey secret Anda
    AccessKeySecret: accessKeySecret,
  }
  // Lihat https://api.alibabacloud.com/product/Iot.
  config.Endpoint = tea.String("iot.cn-beijing.aliyuncs.com")
  _result = &iot20180120.Client{}
  _result, _err = iot20180120.NewClient(config)
  return _result, _err
}

func _main (args []*string) (_err error) {
  // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
  // Kebocoran kode proyek dapat mengakibatkan kebocoran AccessKey, yang mengancam keamanan semua sumber daya di bawah akun. Contoh kode berikut dipanggil menggunakan variabel lingkungan untuk mendapatkan AccessKey, hanya sebagai referensi. Disarankan untuk menggunakan kredensial STS yang lebih aman. Untuk kredensial lainnya, silakan merujuk ke: https://www.alibabacloud.com/help/en/alibaba-cloud-sdk-262060/latest/configure-credentials-378661
  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
  }

Parameter

Deskripsi

accessKeyId

AccessKey ID akun Alibaba Cloud Anda.

Anda dapat pergi ke halaman Pasangan AccessKey di Konsol Manajemen Alibaba Cloud untuk membuat atau melihat pasangan AccessKey Anda.

accessKeySecret

AccessKey secret akun Alibaba Cloud Anda.

RegionId

ID wilayah tempat instance IoT Platform Anda berada. ID wilayah digunakan dalam titik akhir untuk akses layanan. Titik akhir berformat iot.${RegionId}.aliyuncs.com.

Anda dapat melihat wilayah di pojok kiri atas Konsol IoT Platform.

Untuk informasi lebih lanjut tentang format ID wilayah, lihat Wilayah yang didukung.

Mengirim permintaan

SDK membungkus dua kelas untuk setiap operasi API. Kelas dengan nama dalam format ${Nama API}+"Request" menunjukkan permintaan, sedangkan kelas dengan nama dalam format ${Nama API}+"Response" menunjukkan respons.

Prosedur

  1. Inisialisasi SDK. Untuk informasi lebih lanjut, lihat Inisialisasi SDK.

  2. Buat permintaan API dengan menghasilkan instance request yang nama kelasnya dalam format ${Nama API}+"Request".

  3. Panggil metode request.${Parameter Permintaan} dari instance request untuk menentukan parameter permintaan.

  4. Buat instance response yang nama kelasnya dalam format ${Nama API}+"Response" untuk mendapatkan respons. Panggil metode ${Nama API}(request) dari instance client untuk mendapatkan respons terhadap permintaan API. Respons mencakup body dan headers yang dikembalikan oleh server.

Untuk informasi lebih lanjut tentang operasi API dari IoT Platform, lihat Daftar operasi berdasarkan fungsi. Untuk informasi lebih lanjut tentang parameter permintaan dan respons dari setiap operasi API, lihat referensi API.

Contoh berikut menunjukkan cara memanggil operasi Pub untuk menerbitkan pesan ke topik. Untuk informasi lebih lanjut tentang parameter permintaan, lihat Pub.

Penting

Dalam kode sampel berikut, ${iotInstanceId} menentukan ID suatu instance. Anda dapat melihat ID dari instance pada halaman Overview di Konsol IoT Platform.

  • Jika instance Anda memiliki ID, Anda harus menentukan ID untuk parameter ini. Jika tidak, pemanggilan akan gagal.

  • Jika tidak ada halaman Overview atau ID yang dihasilkan untuk instance Anda, Anda tidak perlu mengonfigurasi parameter ini. Hapus kode permintaan yang terkait dengan parameter IotInstanceId atau tentukan string kosong ("") untuk parameter tersebut. Jika tidak, pemanggilan akan gagal.

Untuk informasi lebih lanjut tentang instance IoT Platform, lihat Ikhtisar. Untuk informasi lebih lanjut tentang cara membeli instance, lihat Beli instance Edisi Perusahaan. Untuk informasi lebih lanjut, lihat FAQ tentang instance IoT Platform.

  pubRequest := &iot20180120.PubRequest{
    ProductKey: tea.String("${productKey}"),
    IotInstanceId: tea.String("${iotInstanceId}"),
    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
      }
    }()
    // Salin kode untuk dijalankan, harap cetak nilai pengembalian API sendiri.
    _, _err = client.PubWithOptions(pubRequest, runtime)
    if _err != nil {
      return _err
    }

    return nil
  }()

Kode sampel lengkap

Catatan

Anda dapat mengganti nilai parameter sebelumnya dengan nilai aktual berdasarkan skenario bisnis Anda.

// File ini dibuat secara otomatis, jangan edit. Terima kasih.
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"
)


/**
 * Inisialisasi Client dengan AccessKey dari akun
 * @param accessKeyId
 * @param accessKeySecret
 * @return Client
 * @throws Exception
 */
func CreateClient (accessKeyId *string, accessKeySecret *string) (_result *iot20180120.Client, _err error) {
  config := &openapi.Config{
    // Diperlukan, AccessKey ID Anda
    AccessKeyId: accessKeyId,
    // Diperlukan, AccessKey secret Anda
    AccessKeySecret: accessKeySecret,
  }
  // Lihat https://api.alibabacloud.com/product/Iot.
  config.Endpoint = tea.String("iot.cn-beijing.aliyuncs.com")
  _result = &iot20180120.Client{}
  _result, _err = iot20180120.NewClient(config)
  return _result, _err
}

func _main (args []*string) (_err error) {
  // Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
  // Kebocoran kode proyek dapat mengakibatkan kebocoran AccessKey, yang mengancam keamanan semua sumber daya di bawah akun. Contoh kode berikut dipanggil menggunakan variabel lingkungan untuk mendapatkan AccessKey, hanya sebagai referensi. Disarankan untuk menggunakan kredensial STS yang lebih aman. Untuk kredensial lainnya, silakan merujuk ke: https://www.alibabacloud.com/help/en/alibaba-cloud-sdk-262060/latest/configure-credentials-378661
  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{
    ProductKey: tea.String("${productKey}"),
    IotInstanceId: tea.String("${iotInstanceId}"),
    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
      }
    }()
    // Salin kode untuk dijalankan, harap cetak nilai pengembalian API sendiri.
    _, _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())
    }
    // Hanya contoh pencetakan. Harap berhati-hati dalam penanganan pengecualian dan jangan abaikan pengecualian langsung dalam proyek teknik.
    // cetak pesan kesalahan
    fmt.Println(tea.StringValue(error.Message))
    // Silakan klik tautan di bawah ini untuk diagnosis.
    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)
  }
}

Lampiran: Kode sampel

Anda dapat melihat atau mengunduh kode sampel operasi API di Pusat Sampel IoT Platform SDK. Kode sampel SDK untuk Java, Python, PHP, Node.js, Go, C++, dan .NET disediakan.

Alibaba Cloud OpenAPI Explorer menyediakan alat debugging online untuk operasi API. Di halaman Debugging API, Anda dapat mencari operasi API, memanggil operasi API, dan menghasilkan kode sampel untuk operasi API dari SDK yang berbeda. Di sisi kanan halaman, Anda dapat melihat kode sampel SDK di tab Kode Sampel. Di tab Hasil Debugging, Anda dapat melihat URL permintaan sebenarnya dan respons dalam format JSON.