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
DDDOriginal
2024-11-16 02:38:03471Durchsuche

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]

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
}
}

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

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
}

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)

durch:

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

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!

Stellungnahme:
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