2016-08-16 2 views
0

Пытается использовать API-интерфейс Azure Resource Manager для поиска ресурсов. Сначала я попытался это:InvalidFilter с ресурсами ресурсов ресурса Azure

GET /subscriptions/xxx/resources?$filter=startswith(name,%20'web')&api-version=2015-01-01 

Invalid $ фильтр 'startswith(name, 'web')' указанный в строке запроса. Подробности: 'Неподдерживаемая функция фильтра найдена:' startswith '. Имя свойства: 'name'. Поддерживаемые функции: 'substringof'»

Тогда я попытался это:

GET /subscriptions/xxx/resources?$filter=substringof('web',%20name)%20eq%20true&api-version=2015-01-01 

Invalid $ Фильтр 'substringof('web', name) eq true' указан в строке запроса. Подробности: 'Неподдерживаемый токен, найденный в $ filter string.'

Я не эксперт по OData, поэтому я не уверен, что мой синтаксис неверен, или если я пытаюсь сделать что-то, что не поддерживается в этом API.

+0

Проверено OData версии v2 и v3, синтаксис выглядит хорошо там .. OData v4 немного отличается, функция называется подстрокой там. Не могли бы вы исключить * eq true *, так как это бесполезно, поскольку подстрока должна возвращать логическое значение в любом случае? – juunas

+0

@juunas Да, это был * eq true *, я понял это, выполнив трассировку команды PowerShell 'Find-AzureRmResource -ResourceNameContains'. – BenV

ответ

0

Запрос должен быть:

GET /subscriptions/xxx/resources?$filter=substringof('web',%20name)&api-version=2015-01-01 

Оставить из эк верно. Несмотря на то, что это можно рассматривать как часть официальных примеров протокола v2 и v3 odata, похоже, Azure API не поддерживает это.