1

Частичное редактирование геозон

Topic: Частичное редактирование геозон

Добрый день.
Существующее API Wialon позволяет только полностью редактировать свойства геозоны.
При этом необходимо добавлять все свойства в запрос, в том числе и массив точек.
Возникла необходимость в частичном редактировании геозон в частности в массовом перейменовании геозон (необходимо было в начало каждой геозоны в квадратных скобках дописать некоторый идентификатор)
Геозон огромное количество, и некоторые из них имеют огромное количество точек, из-за этого невозможно выполнить запрос svc=core/batch так как длина URL запроса больше чем может принять Wialon.  Разбитие на цепочку запросов svc=core/batch то есть по факту  на некоторые чанки не решает проблему. В итоге приходиться делать последовательные запросы svc=resource/update_zone при этом надо ждать еще результат запросов svc=resource/get_zone_data чтобы использовать редактирование. Получение свойств геозон тоже довольно долгая операция так как количество геозон насколько огромно, что необходимо выполнять цепочку последовательных запросов для получения.
Просьба добавить в существующее API возможность частичного редактирования геозон.

2

Частичное редактирование геозон

Re: Частичное редактирование геозон

Предложение интересное, в чё-то инновационное (т.к противоречит концепции wialon remote api) Wialon ожидает полный json объекта, это позволяет перезаписать то, что есть в базе и не разбираться с диффами. В предложенном подходе придётся мержить данные из базы и из параметров запроса, для сервера это доп. работа.

a.gonda wrote:

невозможно выполнить запрос svc=core/batch так как длина URL запроса больше чем может принять Wialon.

Это ограничение не Wialon, а http протокола при выполнении GET запроса. Документация Wialon RemoteAPI предписывает все запросы слать методом POST https://sdk.wialon.com/wiki/en/sidebar/ … /reqformat Шлите POST-ом - и не будете ловить 414 Request-URI Too Long

3

Частичное редактирование геозон

Re: Частичное редактирование геозон

Все запросы выполняются методом POST изначально. Для этого была разработана небольшая удобная обертка для Python кода с использованием библиотеки requests.
Если данное предложение по частичному обновлению данных сильно противоречит, можно пойти на компромисс и добавить некоторый флаг который позволил бы обновлять базовую информацию по геозоне (ту информацию которую можно получить используя запрос svc=core/search_item&params={"id":<long>, "flags":<long>} для ресурса с флагом 0x00001000). Даже такое редактирование сильно упростило б текущую ситуацию. Тем более, что при редактировании не все поля есть обязательными и скорее всего работа с диффами все таки осуществляется, но вот только почему в необязательные поля не попал массив точек немного странно.