Страница 1 из 3
Добавление записи через Rest API ( Python )
Добавлено: 22 апр 2019, 13:56
Polyakov
Добрый день, я недавно начал изучать Питона, и тут же пришла в голову идея взаимодействия с РУКОВОДИТЕЛЕМ по API
но не выходит, подскажите что не так на python-e. с php все хорошо! а вот тут косяк.
Код: Выделить всё
import requests
url = 'https://**ссылка***/api/rest.php'
items = { 'field_737' : 'Тестовая заявка', 'field_740' : 'Какой-то текст'}
payload = {
"key": "ключ",
"username": "Логин",
"password": "Пароль",
"action": "insert",
"entity_id": 76,
"item": items,
}
r = requests.post( url, payload)
print(r.text)
выдает след.сообщение
Код: Выделить всё
$ python test.py
{"status":"error","error_code":"","error_message":"items is required"}
Re: Добавление записи через Rest API ( Python )
Добавлено: 22 апр 2019, 14:34
Polyakov
Даже на Toster.ru есть тема, но мертва!( и нет ответа.
https://toster.ru/q/623701
Re: Добавление записи через Rest API ( Python )
Добавлено: 22 апр 2019, 15:11
support
Полагаю что ошибка тут:
Должно быть "items"
Re: Добавление записи через Rest API ( Python )
Добавлено: 22 апр 2019, 15:16
Polyakov
блин, я не заметил!
Сейчас картина другая!
Код: Выделить всё
{"status":"error","error_code":"","error_message":"items is not array"}
Почему?
Re: Добавление записи через Rest API ( Python )
Добавлено: 22 апр 2019, 15:31
support
Полагаю что проблема в этой строчке
Код: Выделить всё
items = { 'field_737' : 'Тестовая заявка', 'field_740' : 'Какой-то текст'}
Тут объявлен просто массив, а должно быть двумерный массив
Код: Выделить всё
$items = array();
$items[] = array(
'field_338' => 'Заявка Тест', //338 - ID текстового поля
'field_426' => '2017-12-29', //426 - ID поля типа "Дата с календарем"
'field_429' => '166,167', //429 - ID поля типа "Выпадающий список с выбором нескольких значений"
);
Как там Python двумерные массивы объявляются?
https://pythontutor.ru/lessons/2d_arrays/
Re: Добавление записи через Rest API ( Python )
Добавлено: 22 апр 2019, 16:38
Polyakov
В какой формате должен быть "items" ??
ключ : значение ?
значения?
Re: Добавление записи через Rest API ( Python )
Добавлено: 22 апр 2019, 16:48
support
Я же показал пример на пхп выше.
По идеи должно быть так, если такой синтаксис поддерживается.
Код: Выделить всё
items = {
{ 'field_737' : 'Тестовая заявка', 'field_740' : 'Какой-то текст'},
{ 'field_737' : 'Тестовая заявка', 'field_740' : 'Какой-то текст'}
}
Re: Добавление записи через Rest API ( Python )
Добавлено: 22 апр 2019, 17:06
Polyakov
Этот синтаксис похож на словарь , а не массив. Поэтому и не понятно что вводить. Ввод массива items в результате выдает ошибку, что это не массив. Аналогично и со словарем. Отсюда и вопрос, какой формат данных нужен: ключ-значение как у вас (тогда это словарь) или массив (но его программа не воспринимает)
Re: Добавление записи через Rest API ( Python )
Добавлено: 22 апр 2019, 17:20
support
Нужен формат ключ-значение
В результате должно быть так
ключ1-значение1 (где значение1 в формате ключ2-значение2)
ключ1 - это 0,1,2,3..10 тоесть просто номер массива. АПИ будет перебирать этот массив и получать значение1.
Затем значение1 так же должно быть ключ2-значение2 где АПИ будет добавлять в базу запись с этими данными.
Re: Добавление записи через Rest API ( Python )
Добавлено: 23 апр 2019, 11:17
support
Ну что, получилось?
Еще один пример, какой должен быть массив.
Код: Выделить всё
Array
(
[0] => Array
(
[field_158] => test api
[field_159] => 2020-12-29
[field_210] => Крым, Евпатория, пер. Больничный 13
)
[1] => Array
(
[field_338] => api test2
[field_426] => 2017-12-29
)
)
За один запрос вы можете передать несколько записей для добавления.