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

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

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

Сообщение Polyakov »

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

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

Сообщение Polyakov »

Все что могли попробовали, ошибка "не массив" хоть тресни! Он массив []! тут странно что часть кода которая занимается авторизацией ( key, username, password ... ) идет в коде как "Словарь" ( ключ : значение ) и он работает, авторизация проходит, а вот дальше items : "Тут уже должен быть именно массив" .
При любом варианте ( массив, словарь ) не принимает, ответ не массив

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

payload = {
    "key": "****************************",
    "username": "login",
    "password": "password",
    "action": "insert",
    "entity_id": 76,
    "items": items,
}

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

{"status":"error","error_code":"","error_message":"items is not array"}
Аватара пользователя
Polyakov
Сообщения: 182
Зарегистрирован: 24 дек 2018, 16:49
Имя: Юрий Поляков
Откуда: Пятигорск

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

Сообщение Polyakov »

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

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

Сообщение support »

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

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

Сообщение Polyakov »

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

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

Сообщение Polyakov »

Опа, вроде пошло но не до конца.

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

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

Сообщение support »

Да, запрос выполнился, но похоже что запись не создалась, так как ID записи пустое.
Проверьте правильно ли указаны поля в массиве items. Можно пример кода посмотреть?
Аватара пользователя
Polyakov
Сообщения: 182
Зарегистрирован: 24 дек 2018, 16:49
Имя: Юрий Поляков
Откуда: Пятигорск

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

Сообщение Polyakov »

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

# -*- coding: utf-8 -*-

#Библиотека пользовательская, взял с инета ( имитирует функцию из php ) 
from php import Php
 
#Библиотека для POST/GET запросов
import requests



url = "http://********/api/rest.php"






item = {
    


	"field_276": "20",
    


	"field_277": "test"



}





params = {



	"key": "0umZsYFjg6NW4EKLxLmDTsCx***************",



	"username": "Admin",
    


	"password": "Parol123",
    


	"action": "insert",
    


	"entity_id": "29",
    


	"items": item



}







date = Php.http_build_query(params)



print(date)





r = requests.get( url, date)



print(r.text)




вот какой запрос уходит и ответ:

key=0umZsYFjg6NW4EKLxLmDTsCx***************&username=Admin&password=Parol123&action=insert&entity_id=29&items[field_276]=20&items[field_277]=test&

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

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

Сообщение Polyakov »

Я написал нужную мне програмулину для Windows ( на Python ), но оставлять заявки через Mail не очень быстро, хотелось бы через API ( как основной способ ), а единственный выход это PHP его на на машинах запускать не очень удобно. --->Питон запускает --> Php скрипт с переменными из Питона--> Результат возвращает в Питон .
НУ извращение какое то
moroz-aleksey-95
Сообщения: 28
Зарегистрирован: 02 окт 2017, 08:49
Имя: Алексей
Откуда: Владивосток

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

Сообщение moroz-aleksey-95 »

Здравствуйте. Можете подсказать по питону?

Написал выборку по API на PHP. Работает.

Блок с параметрами

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

$params = array(
  'key' => ' ***', 
  'username' => 'admin',
  'password' => '****',
  'action' => 'select', //метод, выборка
  'entity_id' => 28, //ID сущности, из которой будут выбираться записи
  'limit' => 0, //Если не указан, выбираются все строки 
  'select_fields' => '242,270,271,399,294,247,286,285,394,481,395,396,293,272,273,397,398,399,400,401,480,275',  
  
  'filters' => array(
    '242'=> "$start,$stop",//'2021-11-05,2021-11-20',  
    //'310'=>array('value'=>82,'condition'=>'include'), //Фильтр по типу поля список. condition может быть include/exclude 
    '294'=>array('value'=>77,'condition'=>'exclude'), //фильтр! не выводятся простые покупки 
    '270' => array('condition'=>'not_empty_value'), //фильтр! Не выводятся заказы, если не указан номер заказчика
    
  )
);


В данный момент пытаюсь сделать приложение на питоне. Но уперся в то, что блок с фильтрами на питоне вообще никак не работает почему-то. Т.е. всегда получаю все записи в ответе.

Например, вот с фильрацией по дате '242'
пытался передавать как словарь, как список словарей, как множество. Разные варианты.
Всегда одно и тоже - фильтрация игнорируется.


Блок с параметрами

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


params = {
	  'key':'****',
          'username':'admin',
          'password':'***',
          'action':'select',
          'entity_id':28,
          'select_fields':'242,247,275,270,271,272,273,285,286,293,294,346,394,395,396,397,398,399,400,401,480,481',
          'limit': 0,
          
          'filters': { 
         		 '242': '2023-02-01,2023-02-05',
         	      },    
       
        }


Еще пробовал вот так передавать параметры

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


from collections import OrderedDict
params = OrderedDict([('key','*****'),
                      ('username','admin'),('password','****'),
                      ('action','select'),('entity_id',28),('limit',0),
                      ('select_fields','242'),
                      ('filters',OrderedDict([
                                              ('242', '2023-02-01,2023-02-05'),
                                              ('294',OrderedDict([('value',77),('condition','exclude')])),
                                              ('270',OrderedDict([('condition','not_empty_value')]))]))]);

Ответить