UI5 - нормализация объекта OData (ответ)

Я ищу метод в библиотеке для преобразования объекта ответа OData в нормализованный объект js, который можно отправить в другую функцию ODataModel.create. "Объектом" OData будет ответ REST OData, содержащий "d", "__meta", "результаты" и т. Д.

У меня есть рабочее решение с пользовательскими методами в модуле утилит, но я не слишком уверен в его устойчивости ко всем возможным правилам OData.

1 ответ

Не обязательно иметь d, __meta а также results раздел в действительном теле OData:

  1. d зелье не является обязательным. Вы также можете просто сформировать свое тело как обычный объект, такой как:

    {Id: 12345, Имя: 'Это действительное тело OData' }

  2. __metadata раздел также является необязательным и может быть пропущен.

  3. results раздел - это то, что вы получите при запросе набора сущностей. Если вы запрашиваете одну сущность (предоставляя ее ключ), этот раздел будет пропущен, поскольку будет только один результат. Вы не можете использовать results раздел, когда вы хотите отправить объекты в службу OData, так как каждая отправка должна происходить в отдельных операциях.

При этом ваш код нормализации / обработки может быть очень простым и выглядеть так:

jQuery.each(odata.results, function(idx, value) {
    var body = value.d ? value.d : value;
    delete body.__metadata;
    // Do something with the body, e.g.:
    ODataModel.create("/AwesomeEntity", body);
});

Надеюсь, это облегчит жизнь? Полные спецификации OData v2 JSON доступны здесь: http://www.odata.org/documentation/odata-version-2-0/json-format/

Другие вопросы по тегам