[Python] Passing a dictionary key value in payload for a python request API

Discussão em 'Python' iniciado por Stack, Fevereiro 22, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to create a script for an API request for a vmware application. I need to pass a variable from a dictionary in payload.

    Here is the code which was able to develop from postman and output is taken as "python requests":-

    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'))


    [​IMG]

    However I need I want to pass the highlighted vcenter_name as a dictionary value something like this:-

    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')


    )

    [​IMG]

    Attaching screen shots for reference.

    After adding inputs[‘vcenterkey’] in the payload , instead of the value in vcenter_name I am getting the exact `inputs[‘vcenterkey’] displayed in the payload which causes the API to fail in the script.

    Continue reading...

Compartilhe esta Página