无法从 Go 中的 GetConfiguration API 调用检索项目类别信息
REST API 调用
GET https://api.softlayer.com/rest/v3/SoftLayer_Product_Package/257/getConfiguration?objectMask=mask[itemCategory]
填充返回的 Product_Package_Order_Configuration 对象中的 itemCategory 字段,如以下示例输出所示:
{ "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 } }
但是,当使用 Go 编程语言进行相同的调用时,尽管在对象掩码中指定了 itemCategory,但 itemCategory 仍然为空,如以下代码片段所示:
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)) }
示例输出显示,尽管 itemCategory 字段包含在对象掩码中,但未填充该字段:
Sample entry: { "id": 7167, "isRequired": 0, "itemCategoryId": 390, "orderStepId": 1, "packageId": 257, "sort": 0 }
解决方案:
问题是由 REST 和 XMLRPC 端点之间的差异引起的。所提供的代码当前已针对 XMLRPC 端点进行配置,如域、用户和 apiKey 参数的存在所示。要使用 REST 端点,请将此部分代码中的
sess := session.New(username, apikey)
替换为:
endpoint := "https://api.softlayer.com/rest/v3" sess := session.New(username, apikey, endpoint)
通过使用 REST 端点,您可以按预期访问 itemCategory 信息。
以上是尽管在对象掩码中指定了,但为什么在 Go 中使用 GetConfiguration API 调用时 itemCategory 字段为空?的详细内容。更多信息请关注PHP中文网其他相关文章!