Asp.Net MVC4 Web API - возврат Json в формате OData из запроса без настраиваемого MediaTypeFormatter

StackOverflow https://stackoverflow.com/questions/9389762

Вопрос

Я пытаюсь использовать новую бета-версию 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top