[ELMA3] Обновление Web API до версии 1.0.1 (ELMA 3.2)
Изменены форматы значений перечислений в объектах
В версии 1.0.0 значения перечислений приходили как строки с названиями этих значений, что во многих случаях неверно, т.к. непосредственно в базе данных значения сохраняются в другом виде. С версии 1.0.1 будет возвращаться именно значение перечисления, которое сохранено в БД, то есть для обычных перечислений – это целое число, для расширяемых – это значение типа Guid.
Добавлены методы получения дерева объектов
В сервис EntityService добавлены методы LoadTree и QueryTree для получения объектов с возможностью развернуть их данные. Например, можно получить список задач и сразу же развернуть список Комментариев, чтобы не делать дополнительный запрос. Для этого вам нужно передать в параметр select этих методов значение "*,Comments/*". Вы можете более подробно ознакомиться с форматом выбора свойств объектов.
Добавлен сервис для выполнения нескольких запросов одновременно
Часто необходимо выполнить запрос на получение разных типов данных, раньше для этого нужно было выполнить несколько веб-запросов к API. В новой версии добавлен сервис BatchOperationService для выполнения нескольких операций одновременно. В этом сервисе реализован метод Query для выполнения нескольких запросов к объектам в рамках одного веб-запроса, этот метод так же поддерживает выборку по свойствам объектов.
Добавлен облегченный протокол получения данных
Для уменьшения размера веб-запроса добавлена возможность указать облегченный протокол данных через заголовок веб-запроса WebData-Version: 2.0
Если говорить кратко, то в этом протоколе объекты будут возвращаться не при помощи универсального объекта WebData а в обычном формате JSON. Этот формат можно использовать при запросе к методам сервиса EntityService, EntityHeadService, BatchOperationService. Также можно использовать этот формат при работе с методами сервисов модулей, например Tasks, Docflow, но обязательно надо учитывать, что данные передаваемые в теле POST-запроса также должны быть в новом формате.
Например, результат получения задачи в обычном протоколе:
{ "Items": [ { "Data": null, "DataArray": [], "Name": "Id", "Value": "45888" }, { "Data": null, "DataArray": [], "Name": "TypeUid", "Value": "f532ef81-20e1-467d-89a4-940c57a609bc" }, { "Data": null, "DataArray": [], "Name": "Uid", "Value": "5c192ab0-a48a-48c4-9ce7-4d86d2e964e2" }, { "Data": null, "DataArray": [], "Name": "Subject", "Value": "Смирнова.19.11.2012-25.11.2012.xls" }, { "Data": null, "DataArray": [], "Name": "Description", "Value": "" }, { "Data": null, "DataArray": [], "Name": "CreationDate", "Value": "11\/26\/2012 10:36:03" }, { "Data": { "Items": [ { "Data": null, "DataArray": [], "Name": "Id", "Value": "273" }, { "Data": null, "DataArray": [], "Name": "Name", "Value": "Смирнова Наталья" }, { "Data": null, "DataArray": [], "Name": "TypeUid", "Value": "18faf3ae-03c9-4e64-b02a-95dd63e54c4d" }, { "Data": null, "DataArray": [], "Name": "Uid", "Value": "b1c5ed1f-6d79-45e6-a774-feb5071212db" } ] }, "DataArray": [], "Name": "CreationAuthor", "Value": null }, { "Data": { "Items": [ { "Data": null, "DataArray": [], "Name": "Id", "Value": "30" }, { "Data": null, "DataArray": [], "Name": "Name", "Value": "Кононов Антон Александрович" }, { "Data": null, "DataArray": [], "Name": "TypeUid", "Value": "18faf3ae-03c9-4e64-b02a-95dd63e54c4d" }, { "Data": null, "DataArray": [], "Name": "Uid", "Value": "86c7bd21-c722-aaab-c506-8c7f8548a5de" } ] }, "DataArray": [], "Name": "Executor", "Value": null }, { "Data": null, "DataArray": [], "Name": "StartDate", "Value": "11\/26\/2012 00:00:10" }, { "Data": null, "DataArray": [], "Name": "EndDate", "Value": "11\/26\/2012 23:59:50" }, { "Data": null, "DataArray": [], "Name": "Priority", "Value": "Medium" }, { "Data": null, "DataArray": [], "Name": "Comments", "Value": null }, { "Data": null, "DataArray": [], "Name": "Attachments", "Value": null }, { "Data": null, "DataArray": [], "Name": "Tags", "Value": null }, { "Data": null, "DataArray": [], "Name": "ChildTasks", "Value": null }, { "Data": null, "DataArray": [], "Name": "Status", "Value": "NewOrder(34387afa-6b70-476f-9d34-748732059003)" } ] }
и тот же самый объект, но в новом формате:
{ "Id": "45888", "TypeUid": "f532ef81-20e1-467d-89a4-940c57a609bc", "Uid": "5c192ab0-a48a-48c4-9ce7-4d86d2e964e2", "Subject": "Смирнова.19.11.2012-25.11.2012.xls", "Description": "", "CreationDate": "11/26/2012 10:36:03", "CreationAuthor": { "Id": "273", "Name": "Смирнова Наталья", "TypeUid": "18faf3ae-03c9-4e64-b02a-95dd63e54c4d", "Uid": "b1c5ed1f-6d79-45e6-a774-feb5071212db" }, "Executor": { "Id": "30", "Name": "Кононов Антон Александрович", "TypeUid": "18faf3ae-03c9-4e64-b02a-95dd63e54c4d", "Uid": "86c7bd21-c722-aaab-c506-8c7f8548a5de" }, "StartDate": "11/26/2012 00:00:10", "EndDate": "11/26/2012 23:59:50", "Priority": "Medium", "Comments": null, "Attachments": null, "Tags": null, "ChildTasks": null, "Status": "NewOrder(34387afa-6b70-476f-9d34-748732059003)" }
как видите, разница в размере очевидна, и если в вашем приложении используется REST-сервис и данные передаются через JSON, то обязательно рассмотрите возможность перехода на новый протокол получения данных.