Возможно ли, чтобы Бриз получил доступ к стороннему API, который не имеет «BreezeController» и не поддерживает OData?Бриз с сторонним API
ответ
«BreezeController» - это просто атрибут .NET, который помогает .NET WebApi обеспечивать поддержку фильтрации и упорядочения запросов с помощью синтаксиса OData и также поддержки сериализации json для графов сущностей и идентификации типов. Идентификатор типа важен, так что бриз может отслеживать сущности внутри его entityManager и объединять результаты запросов и свойства отношения обновления. Сама OData никогда не требуется.
Если вы не хотите, чтобы клиент добавлял на сервер команды фильтрации и заказа, вы можете написать свой собственный атрибут, который просто предоставляет поддержку сериализации json. Сериализация json состоит только в настройке форматирования json.net, который уже использует веб-api.
Источник для BreezeControllerAttribute может быть найден в проекте Breeze.WebApi и действительно очень короткий. Просто создайте свой собственный «FooControllerAttribute», скопировав «BreezeControllerAttribute» и удалите код IFilterProvider.
С другой стороны, поддержка запроса и фильтрации ничего не повредит, и эта логика даже не применяется, если вы не используете методы EntityQuery 'where' 'orderBy' 'select' или 'expand', поэтому, если вы не хочу явно удалить эту способность, нет необходимости не использовать «breezeControllerAttribute»
Но кажется, что клиент Breeze не распознает ответ json, когда он приходит без метаданных. Посмотрите атрибут $ type в ответе [todo sample] (http://todo.breezejs.com/api/todos/Todos?$filter=IsArchived%20eq%20false&$orderby=CreatedAt). API, с которым мой клиент разговаривает, не имеет этого атрибута $ type, я думаю, что он заставит моего клиента Breeze вернуть Object вместо создания экземпляра зарегистрированного EntityType. –
Вы правы, прямо сейчас нам нужен атрибут $ type, предоставляемый путем настройки сериализатора json.net, чтобы распознать тип и объединить данные в entityManager, иначе результаты запроса будут возвращены как простые объекты. Мы активно работаем над тем, как разработчик может сообщить клиенту о типах, возвращаемых из запроса, или для клиента бриза, который будет снабжен правилами вывода, чтобы он мог определять тип ответа, если он явно не предоставлен сервером , –
Было бы хорошо! Планируется ли это? Или было бы лучше предложить на http://breezejs.uservoice.com? –