Попытка передать input_data как json запрос для API - PullRequest
0 голосов
/ 23 апреля 2020

Ниже приведен мой API, я пытаюсь передать информацию из входной таблицы данных, которая содержит надлежащие адрес электронной почты, имя и фамилию, однако, когда я передаю ее в API, она не разрешается. что я тут делаю не так

запросы на импорт

url = "https://api.ZZZ.us/v2/users"

payload = "{\ r \ n \ "action \": \ "create \", \ r \ n \ "user_info \": {\ r \ n
\ "email \": \ " input_data ['emailaddress'] \ ", \ r \ n \" type \ ": 1, \ r \ n \" first_name \ ": \" input_data ['firstname'] \ ", \ r \ n \" last_name \ ": \" input_data ['lastname'] \ "\ r \ n} \ r \ n}" headers = {'Accept': "application / json, application / xml", «Content-Type»: «application / json», «Authorization»: «Bearer XXXXX», «cache-control»: «no-cache», «Postman-Token»: «ab32d014-97fb-499e-8adf- c1baf49871e2 "}

response = reports.request (" POST ", url, data = payload, headers = headers)

print (response.text) output = {'id': 1333121, 'response': response.text}

1 Ответ

1 голос
/ 23 апреля 2020

Вы должны убедиться, что ваш JSON действителен. По этой причине, пожалуйста, закодируйте это хорошо. Я попробовал это и сработало. Вы должны отправить это.

{
    "action": "create",
    "user_info": {
        "email": "mymail@gmail.com",
        "first_name": "mike",
        "last_name": "tyson"
    }
}

Это модификации кода.

import requests
import json

url = "https://enzi2vbg2aau9.x.pipedream.net/"

input_data = ["mymail@gmail.com", 'mike', 'tyson']

payload = json.dumps({
  "action": "create",
  "user_info": {
    "email": input_data[0],
    "first_name": input_data[1],
    "last_name": input_data[2]
  }
})

headers = { 
  'Accept': "application/json, application/xml", 
  'Content-Type': "application/json", 
  'Authorization': "Bearer XXXXX", 
  'cache-control': "no-cache", 
  'Postman-Token': "ab32d014-97fb-499e-8adf-c1baf49871e2" 
  }

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text) # output = {'id': 1333121, 'response': response.text}

если вам нужно отправить строку откуда-то еще, которая приходит в качестве примера полезной нагрузки, тогда вам нужно используйте json .loads (полезная нагрузка), см. этот пример.

payload = '''{
    "action": "create",
    "user_info": {
        "email": "mymail@gmail.com",
        "first_name": "mike",
        "last_name": "tyson"
    }
}'''

payload = json.loads(payload)
payload = json.dumps(payload)
...