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
Libérer: 2024-11-16 02:38:03
original
469 Les gens l'ont consulté

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]
Copier après la connexion

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
}
}
Copier après la connexion

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))
}
Copier après la connexion

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
}
Copier après la connexion

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)
Copier après la connexion

par :

endpoint := "https://api.softlayer.com/rest/v3"
sess := session.New(username, apikey, endpoint)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal