Добавление записи через Rest API ( Python )

Все вопросы/проблемы по установке и использовании.
Аватара пользователя
Polyakov
Сообщения: 177
Зарегистрирован: 24 дек 2018, 16:49
Имя: Юрий Поляков
Откуда: Пятигорск

Добавление записи через Rest API ( Python )

Сообщение 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"}
Аватара пользователя
Polyakov
Сообщения: 177
Зарегистрирован: 24 дек 2018, 16:49
Имя: Юрий Поляков
Откуда: Пятигорск

Re: Добавление записи через Rest API ( Python )

Сообщение Polyakov »

Даже на Toster.ru есть тема, но мертва!( и нет ответа.

https://toster.ru/q/623701
Аватара пользователя
support
Техническая поддержка
Сообщения: 8996
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Добавление записи через Rest API ( Python )

Сообщение support »

Полагаю что ошибка тут:

Код: Выделить всё

"item": items,
Должно быть "items"

Код: Выделить всё

"items": items,
Аватара пользователя
Polyakov
Сообщения: 177
Зарегистрирован: 24 дек 2018, 16:49
Имя: Юрий Поляков
Откуда: Пятигорск

Re: Добавление записи через Rest API ( Python )

Сообщение Polyakov »

блин, я не заметил!
Сейчас картина другая!

Код: Выделить всё

{"status":"error","error_code":"","error_message":"items is not array"}
Почему?
Аватара пользователя
support
Техническая поддержка
Сообщения: 8996
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Добавление записи через Rest API ( Python )

Сообщение 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/
Аватара пользователя
Polyakov
Сообщения: 177
Зарегистрирован: 24 дек 2018, 16:49
Имя: Юрий Поляков
Откуда: Пятигорск

Re: Добавление записи через Rest API ( Python )

Сообщение Polyakov »

В какой формате должен быть "items" ??
ключ : значение ?
значения?
Аватара пользователя
support
Техническая поддержка
Сообщения: 8996
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Добавление записи через Rest API ( Python )

Сообщение support »

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

Код: Выделить всё

items = {
  { 'field_737' : 'Тестовая заявка', 'field_740' : 'Какой-то текст'},
  { 'field_737' : 'Тестовая заявка', 'field_740' : 'Какой-то текст'}
}
Аватара пользователя
Polyakov
Сообщения: 177
Зарегистрирован: 24 дек 2018, 16:49
Имя: Юрий Поляков
Откуда: Пятигорск

Re: Добавление записи через Rest API ( Python )

Сообщение Polyakov »

Этот синтаксис похож на словарь , а не массив. Поэтому и не понятно что вводить. Ввод массива items в результате выдает ошибку, что это не массив. Аналогично и со словарем. Отсюда и вопрос, какой формат данных нужен: ключ-значение как у вас (тогда это словарь) или массив (но его программа не воспринимает)
Аватара пользователя
support
Техническая поддержка
Сообщения: 8996
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Добавление записи через Rest API ( Python )

Сообщение support »

Нужен формат ключ-значение

В результате должно быть так
ключ1-значение1 (где значение1 в формате ключ2-значение2)

ключ1 - это 0,1,2,3..10 тоесть просто номер массива. АПИ будет перебирать этот массив и получать значение1.

Затем значение1 так же должно быть ключ2-значение2 где АПИ будет добавлять в базу запись с этими данными.
Аватара пользователя
support
Техническая поддержка
Сообщения: 8996
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Добавление записи через Rest API ( Python )

Сообщение 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
        )

)
За один запрос вы можете передать несколько записей для добавления.
Ответить