我正在尝试通过openIdConnectUserName检索用户个人资料。
网址为:
https://api.softlayer.com/rest/v3/SoftLayer_Account/getUsers.json?objectMask=mask[virtualGuestCount,virtualGuests.id,virtualGuests.hostname,virtualGuests.status,hardwareCount,hardware.id,hardware.hostname,hardware.hardwareStatus,userStatus,apiAuthenticationKeyCount,apiAuthenticationKeys,loginAttemptCount,successfulLoginCount,unsuccessfulLoginCount]&objectFilter={"users":{"openIdConnectUserName":{"operation":"thisguy@us.ibm.com"}}}
我收到带有“内部服务器错误”消息的RC 500
这是一个有效的objectFilter字段吗?
答案 0 :(得分:0)
在没有objectFilter的情况下尝试查询。如果它有效,您将知道它是无效的objectFilter。
您也可能查询过多的数据。如果查询结果太大,则可能返回500错误。您可以尝试限制/偏移参数。这似乎不太可能,因为您正在过滤特定的电子邮件地址。
答案 1 :(得分:0)
您获得的错误可能是由于响应是大的,因此您应该使用结果限制(请参阅底部的链接)。
但主要问题是因为对象过滤器工作不正常,原因可能是由于包含openIdConnectUserName属性的主数据类型没有任何关系属性,请参阅下面的内容,以便在发生此类问题时进行简要说明:
“不幸的是,过滤 MetricDataTypes是不可能的,因为此数据类型:SoftLayer_Container_Metric_Data_Type没有任何关系属性......” - SoftLayer API how to filter MetricDataTypes
作为一种解决方法,我建议使用另一个属性,例如“email”和“managedByOpenIdConnectFlag”(其中“true”确定此门户网站用户是否由IBMID联合管理,电子邮件应与openIdConnectUserName相同)添加到对象掩码,然后将它们与对象过滤器一起使用。
或者您可以使用编程语言按照所需的特定属性(openIdConnectUserName)进行过滤,如论坛提供的那样。
PD:我注意到你提供的请求在对象掩码中没有“openIdConnectUserName”属性,因此,当使用对象时,即使在过滤器中正确定义了响应,响应也不会提供此属性过滤器需要响应中所需的属性,应该先在对象掩码中声明。
有关更多信息,请参阅以下内容:
solve error fetching http headers
https://sldn.softlayer.com/article/using-result-limits-softlayer-api