Asp.Net MVC4 Web API - возврат Json в формате OData из запроса без настраиваемого MediaTypeFormatter
-
29-10-2019 - |
Вопрос
Я пытаюсь использовать новую бета-версию WebAPI для создания веб-службы, которую я могу запрашивать используя соглашения о строках запроса OData и вернуть Json в формате OData . Я также хочу использовать OData 2.0 (вместо 1.0).
Хотя не похоже, что он поддерживает $ select и заголовки, похоже, могут переопределить параметр $ format возврат универсального кода IQueryable
, похоже, обеспечивает поддержку большинства других параметров запроса, которые мне нужны.
Я действительно борюсь с тем, как лучше всего предоставить объекты Json, соответствующие спецификации OData 2.0. WebAPI просто возвращает обычные данные Json при запросе. Например, если я выполняю GET-запрос чего-то вроде этого ...
родовое слово.. чтобы получить максимальное совпадение, соответствующее указанному номеру RONumber на моей машине разработчика, я получаю ответ, содержащий следующий Json ...
родовое словоМне нужен Json, соответствующий спецификации OData 2.0. Что-то вроде этого ..
родовое словоПолагаю, я мог бы написать собственный код генерирующего кода, чтобы получить желаемую структуру. Я также мог бы изменить мои возвращенные объекты, чтобы имитировать структуру желаемого Json. Помимо этих двух вариантов, знает ли кто-нибудь умный способ заставить WebAPI предоставлять мне объекты Json в формате OData 2.0?
Решение
Чтобы обеспечить правильную сериализацию, вам необходимо написать свой собственный кодовый кодовый код.Мы не поставляли форматировщик OData в бета-версии MVC 4, но в предыдущем воплощении WCF Web Api есть несколько примеров того, как его написать. http://wcf.codeplex.com/SourceControl/list/changesets Найдите Microsoft.Net.Http.Formatting.OData (у вас должна быть возможность использовать большую часть исходного кода, хотя некоторые детали реализации могли измениться)
Альтернативой может быть попытка создать DTO, который будет сериализован в форму, ожидаемую OData v2.