首页 > 后端开发 > Golang > 尽管在对象掩码中指定了,但为什么在 Go 中使用 GetConfiguration API 调用时 itemCategory 字段为空?

尽管在对象掩码中指定了,但为什么在 Go 中使用 GetConfiguration API 调用时 itemCategory 字段为空?

DDD
发布: 2024-11-16 02:38:03
原创
469 人浏览过

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

无法从 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板