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!