我正在尝试为 vmware 应用程序的 API 请求创建脚本。我需要从有效载荷的字典中传递一个变量。
这是能够从邮递员开发的代码,输出被视为“python请求”:-
import requests
url = "url@domain/api-path"
payload = "{\r\n \"name\" : \"VC Adapter Instance\",\r\n \"description\" : \"A vCenter Adapter Instance\",\r\n \"collectorId\" : \"1\",\r\n \"adapterKindKey\" : \"VMWARE\",\r\n \"resourceIdentifiers\" : [ {\r\n \"name\" : \"AUTODISCOVERY\",\r\n \"value\" : \"true\"\r\n }, {\r\n \"name\" : \"PROCESSCHANGEEVENTS\",\r\n \"value\" : \"true\"\r\n }, {\r\n \"name\" : \"VCURL\",\r\n \"value\" : \"vcenter_name\" \r\n } ],\r\n \"credential\" : {\r\n \"id\" : null,\r\n \"name\" : \"Added Credential\", \r\n \"adapterKindKey\" : \"VMWARE\",\r\n \"credentialKindKey\" : \"PRINCIPALCREDENTIAL\",\r\n \"fields\" : [ {\r\n \"name\" : \"USER\",\r\n \"value\" : \"administrator@vsphere.local\" \r\n }, {\r\n \"name\" : \"PASSWORD\",\r\n \"value\" : \"Hidden-Password \" \r\n } ],\r\n \"others\" : [ ],\r\n \"otherAttributes\" : { }\r\n },\r\n \"monitoringInterval\" : 1,\r\n \"others\" : [ ],\r\n \"otherAttributes\" : { }\r\n}\r\n"
headers = {
'Accept': 'application/json',
'Authorization': 'Hidden Token',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
但是,我需要将突出显示的 vcenter_name 作为字典值传递,如下所示:-
import requests
url = "url@domain/api-path"
Inputs = {‘vcenterkey’ : ‘vcenter_name’}
payload = "{\r\n \"name\" : \"VC Adapter Instance\",\r\n \"description\" : \"A vCenter Adapter Instance\",\r\n \"collectorId\" : \"1\",\r\n \"adapterKindKey\" : \"VMWARE\",\r\n \"resourceIdentifiers\" : [ {\r\n \"name\" : \"AUTODISCOVERY\",\r\n \"value\" : \"true\"\r\n }, {\r\n \"name\" : \"PROCESSCHANGEEVENTS\",\r\n \"value\" : \"true\"\r\n }, {\r\n \"name\" : \"VCURL\",\r\n \"value\" : \"inputs[‘vcenterkey’] \" \r\n } ],\r\n \"credential\" : {\r\n \"id\" : null,\r\n \"name\" : \"Added Credential\", \r\n \"adapterKindKey\" : \"VMWARE\",\r\n \"credentialKindKey\" : \"PRINCIPALCREDENTIAL\",\r\n \"fields\" : [ {\r\n \"name\" : \"USER\",\r\n \"value\" : \"administrator@vsphere.local\" \r\n }, {\r\n \"name\" : \"PASSWORD\",\r\n \"value\" : \"Hidden-Password \" \r\n } ],\r\n \"others\" : [ ],\r\n \"otherAttributes\" : { }\r\n },\r\n \"monitoringInterval\" : 1,\r\n \"others\" : [ ],\r\n \"otherAttributes\" : { }\r\n}\r\n"
headers = {
'Accept': 'application/json',
'Authorization': 'Hidden Token',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8')
)
附上截图供参考。
在有效负载中添加输入['vcenterkey'] 后,而不是 vcenter_name 中的值,我得到了有效负载中显示的确切 `inputs['vcenterkey'] ,这导致 API 在脚本中失败。