[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-запроса также должны быть в новом формате.
Например, результат получения задачи в обычном протоколе:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | { "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)" } ] } |
и тот же самый объект, но в новом формате:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | { "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, то обязательно рассмотрите возможность перехода на новый протокол получения данных.