Python:Google Cloud Identity API > 设备 > 列表
Python: Google Cloud Identity API > Devices > List
使用 Google Cloud Identity API > 设备 > 带有过滤器的列表请求以包含按序列号查询的方式,对于序列号不包含空格的记录,即 5HCS8767,但会 return 如果序列号包含空格,例如 VMWare VM 中的空格,即 WMWARE-34 98 83 DE 38... 等
该请求是一个 http get 请求,如下所示:
device_query = f'{device_endpoint_url}?filter=serial:{serial_number}&view=COMPANY_INVENTORY'
res = requests.get(device_query, headers=headers).json()
成功的响应如下所示:
{'devices': [{'name': 'devices/jsihshd98ashd98ahsd', 'createTime': '1000-01-01T01:01:01.011Z', 'lastSyncTime': '1970-01-01T00:00:00Z', 'ownerType': 'COMPANY', 'deviceType': 'CHROME_OS', 'serialNumber': '<SERIAL NUMBER>', 'assetTag': '<ASSET TAG>'}], 'nextPageToken': '<NEXT PAGE TOKEN>'}
查询带空格序列号的响应,return为空
我已尝试对序列号进行 urlencoding,结果相同。
有没有人遇到过类似的情况?
谢谢,
在查询不带空格的序列号时,调用的工作方式如文档中所述:
GET 请求看起来像这样并且编码为:
https://cloudidentity.googleapis.com/v1/devices?serial:CSD9S7E7W&view=COMPANY_INVENTORY
查询带空格的序列号时:(EMPTY RESPONSE)
GET 请求看起来像这样并被编码:
https://cloudidentity.googleapis.com/v1/devices?filter=serial:VMWARE-56 4D F9 5D 52 07 0F CF-E1 0C ED E4 DD 40 2A B2&view=COMPANY_INVENTORY
https://cloudidentity.googleapis.com/v1/devices?filter=serial:VMWARE-56%204D%20F9%205D%2052%2007%200F%20CF-E1%200C%20ED%20E4%20DD%2040%202A%20B2&view=COMPANY_INVENTORY
查询带空格的序列号时:(预期响应 - 工作)
在序列号 %22 前后添加和编码引号
GET 请求看起来像这样并被编码:
https://cloudidentity.googleapis.com/v1/devices?filter=serial:"VMWARE-23 4H C9 4D"&view=COMPANY_INVENTORY
https://cloudidentity.googleapis.com/v1/devices?filter=serial:%22VMWARE-23%204H%20C9%204D%22&view=COMPANY_INVENTORY
在序列号前后使用引号适用于带空格和不带空格的序列号,所以最好只使用它们。
使用 python 库 urllib:
import urllib.parse
serial_number = urllib.parse.quote(f'"{serialNumber}"')
"VMWARE-23 4H C9 4D" >>> %22VMWARE-23%204H%20C9%204D%22
res = requests.get(f'https://cloudidentity.googleapis.com/v1/devices?filter=serial:{serial_number}&view=COMPANY_INVENTORY', headers=headers)
使用 Google Cloud Identity API > 设备 > 带有过滤器的列表请求以包含按序列号查询的方式,对于序列号不包含空格的记录,即 5HCS8767,但会 return 如果序列号包含空格,例如 VMWare VM 中的空格,即 WMWARE-34 98 83 DE 38... 等
该请求是一个 http get 请求,如下所示:
device_query = f'{device_endpoint_url}?filter=serial:{serial_number}&view=COMPANY_INVENTORY'
res = requests.get(device_query, headers=headers).json()
成功的响应如下所示:
{'devices': [{'name': 'devices/jsihshd98ashd98ahsd', 'createTime': '1000-01-01T01:01:01.011Z', 'lastSyncTime': '1970-01-01T00:00:00Z', 'ownerType': 'COMPANY', 'deviceType': 'CHROME_OS', 'serialNumber': '<SERIAL NUMBER>', 'assetTag': '<ASSET TAG>'}], 'nextPageToken': '<NEXT PAGE TOKEN>'}
查询带空格序列号的响应,return为空
我已尝试对序列号进行 urlencoding,结果相同。
有没有人遇到过类似的情况?
谢谢,
在查询不带空格的序列号时,调用的工作方式如文档中所述:
GET 请求看起来像这样并且编码为:
https://cloudidentity.googleapis.com/v1/devices?serial:CSD9S7E7W&view=COMPANY_INVENTORY
查询带空格的序列号时:(EMPTY RESPONSE)
GET 请求看起来像这样并被编码:
https://cloudidentity.googleapis.com/v1/devices?filter=serial:VMWARE-56 4D F9 5D 52 07 0F CF-E1 0C ED E4 DD 40 2A B2&view=COMPANY_INVENTORY
https://cloudidentity.googleapis.com/v1/devices?filter=serial:VMWARE-56%204D%20F9%205D%2052%2007%200F%20CF-E1%200C%20ED%20E4%20DD%2040%202A%20B2&view=COMPANY_INVENTORY
查询带空格的序列号时:(预期响应 - 工作)
在序列号 %22 前后添加和编码引号
GET 请求看起来像这样并被编码:
https://cloudidentity.googleapis.com/v1/devices?filter=serial:"VMWARE-23 4H C9 4D"&view=COMPANY_INVENTORY
https://cloudidentity.googleapis.com/v1/devices?filter=serial:%22VMWARE-23%204H%20C9%204D%22&view=COMPANY_INVENTORY
在序列号前后使用引号适用于带空格和不带空格的序列号,所以最好只使用它们。
使用 python 库 urllib:
import urllib.parse
serial_number = urllib.parse.quote(f'"{serialNumber}"')
"VMWARE-23 4H C9 4D" >>> %22VMWARE-23%204H%20C9%204D%22
res = requests.get(f'https://cloudidentity.googleapis.com/v1/devices?filter=serial:{serial_number}&view=COMPANY_INVENTORY', headers=headers)