Maison >développement back-end >Golang >Pourquoi le champ itemCategory est-il vide lors de l'utilisation de l'appel API GetConfiguration dans Go, bien qu'il soit spécifié dans le masque d'objet ?

Pourquoi le champ itemCategory est-il vide lors de l'utilisation de l'appel API GetConfiguration dans Go, bien qu'il soit spécifié dans le masque d'objet ?

DDD
DDDoriginal
2024-11-16 02:38:03480parcourir

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

Impossible de récupérer les informations sur la catégorie d'élément à partir de l'appel de l'API GetConfiguration dans Go

L'appel de l'API REST

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

remplit le champ itemCategory dans l'objet Product_Package_Order_Configuration renvoyé, comme le montre l'exemple suivant sortie :

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

Cependant, lorsque vous utilisez le langage de programmation Go pour effectuer le même appel, itemCategory reste vide bien qu'il soit spécifié dans le masque d'objet, comme démontré dans l'extrait de code suivant :

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

L'exemple de sortie montre que le champ itemCategory n'est pas renseigné, bien qu'il soit inclus dans l'objet masque :

Sample entry:

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

Solution :

Le problème provient d'une divergence entre les points de terminaison REST et XMLRPC. Le code fourni est actuellement configuré pour le point de terminaison XMLRPC, comme l'indique la présence des paramètres domaines, utilisateur et apiKey. Pour utiliser le point de terminaison REST, remplacez cette section dans le code :

sess := session.New(username, apikey)

par :

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

En utilisant le point de terminaison REST, vous pouvez accéder aux informations itemCategory comme prévu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn