Heim > Backend-Entwicklung > Golang > Warum ist das Feld „itemCategory' leer, wenn der API-Aufruf „GetConfiguration' in Go verwendet wird, obwohl es in der Objektmaske angegeben ist?

Warum ist das Feld „itemCategory' leer, wenn der API-Aufruf „GetConfiguration' in Go verwendet wird, obwohl es in der Objektmaske angegeben ist?

DDD
Freigeben: 2024-11-16 02:38:03
Original
469 Leute haben es durchsucht

Why is the itemCategory field empty when using the GetConfiguration API call in Go, despite being specified in the object mask?

Artikelkategorieinformationen können nicht vom GetConfiguration-API-Aufruf in Go abgerufen werden

Der REST-API-Aufruf

GET https://api.softlayer.com/rest/v3/SoftLayer_Product_Package/257/getConfiguration?objectMask=mask[itemCategory]
Nach dem Login kopieren

wird ausgefüllt das Feld „itemCategory“ im zurückgegebenen Objekt „Product_Package_Order_Configuration“, wie im folgenden Beispiel dargestellt Ausgabe:

{
"id": 7167,
"isRequired": 0,
"itemCategoryId": 390,
"orderStepId": 1,
"packageId": 257,
"sort": 0,
"itemCategory": {
"categoryCode": "trusted_platform_module",
"id": 390,
"name": "Server Security",
"quantityLimit": 1,
"sortOrder": 0
}
}
Nach dem Login kopieren

Wenn Sie jedoch die Programmiersprache Go verwenden, um denselben Aufruf durchzuführen, bleibt itemCategory leer, obwohl es in der Objektmaske angegeben ist, wie im folgenden Codeausschnitt gezeigt:

package main

import (
    "fmt"
    "encoding/json"
    "github.com/softlayer/softlayer-go/session"
    "github.com/softlayer/softlayer-go/services"
)

func main() {
    username := "set-me"
    apikey := "set-me"

    sess := session.New(username, apikey)
    sess.Debug = true

    service := services.GetProductPackageService(sess)

    mask := "itemCategory"

    result, err := service.Mask(mask).Id(257).GetConfiguration()
    if err != nil {
        fmt.Printf("\n Unable to retrieve config:\n - %s\n", err)
        return
    }

    jsonFormat, jsonErr := json.MarshalIndent(result, "", "     ")
    if jsonErr != nil {
        fmt.Println(jsonErr)
        return
    }
    fmt.Println(string(jsonFormat))
}
Nach dem Login kopieren

Die Beispielausgabe zeigt, dass das Feld „itemCategory“ nicht ausgefüllt ist, obwohl es im Objekt enthalten ist Maske:

Sample entry:

{
    "id": 7167,
    "isRequired": 0,
    "itemCategoryId": 390,
    "orderStepId": 1,
    "packageId": 257,
    "sort": 0
}
Nach dem Login kopieren

Lösung:

Das Problem entsteht durch eine Diskrepanz zwischen den REST- und XMLRPC-Endpunkten. Der bereitgestellte Code ist derzeit für den XMLRPC-Endpunkt konfiguriert, was durch das Vorhandensein der Parameter domains, user und apiKey angezeigt wird. Um den REST-Endpunkt zu verwenden, ersetzen Sie diesen Abschnitt im Code:

sess := session.New(username, apikey)
Nach dem Login kopieren

durch:

endpoint := "https://api.softlayer.com/rest/v3"
sess := session.New(username, apikey, endpoint)
Nach dem Login kopieren

Durch die Verwendung des REST-Endpunkts können Sie wie vorgesehen auf die itemCategory-Informationen zugreifen.

Das obige ist der detaillierte Inhalt vonWarum ist das Feld „itemCategory' leer, wenn der API-Aufruf „GetConfiguration' in Go verwendet wird, obwohl es in der Objektmaske angegeben ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage