2014-11-26 2 views
5

У меня есть веб-api 2.2, который настроен для OData v4. Я хочу вернуть пользователя по идентификатору и включить только идентификатор группы пользователей, членом которого является пользователь. Когда я делаю это

http://localhost/User?$filter=id eq 312&$select=*,userGroups/id&$expand=userGroups 

Я получаю эту ошибку

Запрос, указанный в URI не является действительным. Найдено путь с несколькими свойствами навигации в предложении select. Перепишите запрос таким образом, чтобы каждый уровень выбора или разворота содержал только TypeSegments или Properties.

Найден путь с несколькими свойствами навигации в предложении select. Повторите запрос, чтобы каждый уровень выбора или расширения только содержит либо TypeSegments, либо Properties.

Запрос будет выполняться, если удалить «userGruops/идентификатор»

ответ

3

Вы должны написать запрос следующим образом:

http://localhost/User?$filter=id eq 312&$select=*&$expand=userGroups($select=id) 

Кстати, вы также можете удалить $select=* сегмент как все неавигационные свойства по умолчанию включены в ответ.

+0

Это прекрасно работает. Я не думаю, что Microsoft следует за спецификациями OData. Спасибо –

+1

@BrettFeagans Я из команды OData из Microsoft, и я хорошо связан с нашим колледжем, работающим над парсером URL в ODataLib. Не могли бы вы пролить свет на то, что точно не соблюдается достаточно хорошо? Мы хотели бы услышать ваши отзывы и улучшить наш стек соответственно. –

Смежные вопросы