Короткий ответ
Вы правы. Если все, что вы делаете, - это просто простые операции, то вам не нужны никакие из этих библиотек, поскольку в конце дня они являются просто вызовами REST, которые следуют определенным соглашениям (т. Е. Спецификация OData).
Длинный ответ
Причина, по которой у нас есть все эти клиентские API, заключается в том, что OData предлагает / определяет гораздо больше вещей.
Давайте попробуем перейти к примеру. Пример, который я использую: Пакетные запросы в OData. В простейших терминах Olingo определяет способ объединения нескольких HTTP-запросов в один. У него есть четко определенный синтаксис. Это выглядит примерно так
POST /service/$batch HTTP/1.1
Host: host
OData-Version: 4.0
Content-Type: multipart/mixed; boundary=batch_36522ad7-fc75-4b56-8c71-56071383e77b
Content-Length: ###
--batch_36522ad7-fc75-4b56-8c71-56071383e77b
Content-Type: application/http
GET /service/Customers('ALFKI')
Host: host
--batch_36522ad7-fc75-4b56-8c71-56071383e77b
Content-Type: application/http
GET /service/Products HTTP/1.1
Host: host
--batch_36522ad7-fc75-4b56-8c71-56071383e77b--
Теперь здесь довольно много вещей.
- Вы должны начать пакетный запрос с
batch_<Unique identifier>
и отделить отдельные HTTP-запросы от границы пакета, а когда вы закончите, вы завершите его с batch__<Unique identifier>--
- Вы задаете идентификатор партии в качестве заголовка и отправляете дополнительные заголовки (например, тип контента, длина контента), которые вы можете видеть в.
Теперь вернемся к исходному вопросу, чтобы быть уверенным, что вы можете использовать много конкатенации строк в своем коде JavaScript, генерировать правильную полезную нагрузку и выполнять вызов ajax, а затем анализировать ответ аналогичного типа, но как разработчик приложения, все, что вам нужно about пакетирует ваш запрос GET, POST, PUT и DELETE и выполняет операцию, которую вы хотите.
Теперь, если вы используете клиентскую библиотеку (пример является общим и может отличаться от библиотеки к библиотеке), код должен выглядеть примерно так:
OData.request( {
requestUri: "http://ODataServer/Myservice.svc/$batch",
method: "POST",
data: { __batchRequests: [
{ requestUri: "Customers('ALFKI')", method: "GET" },
{ requestUri: "Products", method: "GET" }
]}
},
function (data, response) {
//success handler
}, undefined, OData.batchHandler);
Таким образом, с точки зрения чисто бизнес-предложений библиотеки, подобные этим, могут сэкономить вам несколько человеко-часов в зависимости от размера вашего приложения, которое будет использовано для создания правильных строк полезной нагрузки или правильной строки URL-адреса (в случае фильтров, свойств навигации и т. Д.) ) и отладка продумывали код на случай, если вы пропустили скобку или неправильно написали имя заголовка, которое можно использовать при построении базовой логики для приложения / продукта и позволить стандартизированной, повторяющейся и скучной (взвешенной мысли) работе для вас.