Войти

Войти



Вы еще не зарегистрированы?


Восстановить пароль Активация

Форум ~ Просьбы и предложения

Rest API не получается обновить запись

January 20, 2019
Выполнено
0
 

Алексей Верхогляд
January 20, 2019

Здравствуйте!
Возможно ли PUT: /apps/APP_ID/dtypes/ID.xml переделать в браузерную строку вида:
https://quintadb.ru/apps/b5WOruE8njWQvNs8knv8km/dtypes/aLWR1GESnikykpwCoGWOmF.xml?rest_api_key=_________мой_ключ__________&values={"aKBCoaobHjWPyGsCkAnSoO"=>"Запрос_котировок"}

Пробую, не получается. Или не правильно пишу.



Igor Petrushenko
January 20, 2019

Здравствуйте, Алексей!

Нет, values явно неправильно так прописывать в URL.
Пожалуйста, изучите примеры скриптов, которые мы даем в API.
Если Вы используете XML, то там совсем по-другому отправляются параметры. В примере на Руби это показано.
А еще лучше JSON использовать, там проще.



Алексей Верхогляд
January 20, 2019

Я уже перепробовал всё, что можно))
Пишу в Delphi
Код:
IdHTTP1.Put(‘https://quintadb.ru/apps/’r_app_id[sin]‘/dtypes/’r_id[sin]‘.xml’, TStringStream.Create(‘{"rest_api_key":[“____мой_ключ___”], “values”:{"aKBCoaobHjWPyGsCkAnSoO":“Запрос котировок”}}’, TEncoding.UTF8));

В итоге запись обновляется, но теряет все показатели, а так же присваивается новый номер (будто создаётся новая запись).



Алексей Верхогляд
January 20, 2019

В общем всё равно не верная транскрипция. Можете пример какой-нибудь кинуть любой?



Igor Petrushenko
January 20, 2019

Пример чего?
В документации есть примеры на двух языках. Также по каждому вызову есть примеры.



Алексей Верхогляд
January 20, 2019

Целый день голову ломаю. Может что-то не хватает?

Формат и метод: JSON (PUT)
Адрес: /apps/APP_ID/dtypes/ID.json
Пример тела запроса:
{"rest_api_key":“API_KEY”, “values” => {"aNW4nkW5bdUjldO8oKuSku" : 3, “aMW4HKWR9bnOoGWQbpWQS4” : “b”, “cMW6pcTSjbWOFdTCkBtmkN” : "c"}}


На основании этого мой код:
Stream:=TStringStream.Create(‘
{"rest_api_key":“_____ключ____”,“values”=>{"dcHf8vWOjdI4BcMv1diGL0":“klin.lab9@yandex.ru”}}’
);
IdHTTP1.Put(‘https://quintadb.ru/apps/’r_app_id[sin]‘/dtypes/’r_id[sin]‘.json’, Stream);



Алексей Верхогляд
January 20, 2019

ИТОГ: Запись обновляется, но values не вносятся.
Кстати, запись обновляется так же, если убрать все параметры (даже ключ), оставить только адрес



Igor Petrushenko
January 20, 2019

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

А ключ все равно нужен, если с сайта разлогинитесь то запросы перестанут работать.



Igor Petrushenko
January 20, 2019

Вижу уже параметры идут, правда в формате строки, т.е. весь хеш параметров в формате строки. Поищите как в делфи сформировать и отправить параметры. Если не получится, завтра наши программисты также поищут.



Алексей Верхогляд
January 20, 2019

Ок. Так и не получилось пока.. Надеюсь завтра сможете помочь подумать, как сделать.



Igor Petrushenko
January 20, 2019

А Вам обязательно на делфи?



Алексей Верхогляд
January 21, 2019

Да. Тем более осталась только функция корректировки записей.

Мне бы пример любого полного кода, хоть в php. Я бы переделал.

Пробовал скриптами в html, bat ником, через браузер напрямую – результата нет.


ZsSos53j60M.jpg

Igor Petrushenko
January 21, 2019

Полного, в смысле с апдейтом? На ruby же рабочий пример.



Azerorh
January 21, 2019

Здравствуйте, Алексей!
Есть пример готового кода на Jquery

$.ajax({
url: “https://quintadb.ru/apps/app_id/dtypes/ID.json”,
type: “PUT”,
data: {"rest_api_key":“your_rest_api_key”, “values” : {"value_id": "some_data"}},
});



Алексей Верхогляд
January 21, 2019

Отлично! Заработало! Обновляет! Спасибо ОГРОМНЕЙШЕЕ!
НО!
Только есть одно поле, которое не хочет редактироваться:
acybJcPhDdLyoIwbdcNKSD

Не могу понять почему



Алексей Верхогляд
January 21, 2019

При чём интересная особенность!
Если значение поля acybJcPhDdLyoIwbdcNKSD любое, кроме как – “На согласование/На доработку”, то другие поля не могут редактироваться;
Стоит изменить значение поля – “На согласование/На доработку”, то все поля (кроме него) могут редактироваться.
Не понимаю как это зависит.



Igor Nosovskiy
January 22, 2019

Здравствуйте, Алексей.
Перешлите нам на почту admin@quintadb.ru запись которую вы передаете через API.





Алексей Верхогляд
January 22, 2019

Отправил на почту



Igor Petrushenko
January 22, 2019

Спасибо, получили, разберемся и завтра ответим.



Алексей Верхогляд
January 24, 2019

Записал на видео, т.к. так проще объяснить
https://www.youtube.com/watch?v=dj-Pyi2dZB0

Во вложении программа, которую я использовал для теста.

По просьбе оправляю информацию о направлении запросов RestAPI:
Получилось откорректировать поле записи:
24.01.2019 0:19:12
dcP8kXWP1dIikRDeWZqmo6 : 101010

Не получилось откорректировать поле записи:
24.01.2019 0:20:00
acybJcPhDdLyoIwbdcNKSD : Согласовано


Test RestAPI.zip

Igor Nosovskiy
January 24, 2019

Здравствуйте, Алексей.
Мы выяснили, что причина в действии по условию под названием “Действие отклонено”.
У него стоит галочка “ПРИ СОБЛЮДЕНИИ КРИТЕРИЕВ ДАННЫЕ В ТАБЛИЦУ НЕ ОТПРАВЛЯТЬ”.
Все должно заработать, если вы ее снимете.



Алексей Верхогляд
January 24, 2019

Огромное Спасибо! Получилось! Всё работает!
Жаль, что теперь без галочки “ПРИ СОБЛЮДЕНИИ КРИТЕРИЕВ ДАННЫЕ В ТАБЛИЦУ НЕ ОТПРАВЛЯТЬ”, но это лучше, чем не работающая программа.
Топик можно закрыть.



Поделиться обсуждением в социальных сетях:





Теги

#api