Azure Resources API:如何基于displayname字段实现$filter筛选?
如何通过Azure Resources API基于displayName筛选逻辑应用连接资源
首先,我得先澄清几个关键点,帮你解决这个筛选问题:
- OData筛选语法的正确格式:Azure RM API使用OData V3语法,嵌套属性的筛选需要用**斜杠(/)**而非点号(.)。你之前用
properties.displayName的写法不符合语法要求,正确的写法是properties/displayName。 - 不需要额外的$expand参数:你提到尝试
$expand=ResourceProperties或Properties失败,其实逻辑应用连接这类资源的properties字段默认就包含在Resources API的响应里,完全不需要额外展开。那些$expand参数是针对特定关联资源或扩展属性的,这里根本用不上。
正确的请求示例
假设你要筛选显示名称为My Outlook Connection的逻辑应用连接,替换占位符后的请求URL应该是这样的:
GET https://management.azure.com/subscriptions/{subscriptionId}/resources?$filter=properties/displayName eq 'My Outlook Connection'&api-version=2018-02-01
额外注意事项
- URL编码:如果你的displayName包含空格、特殊字符(比如&、=),必须对这些字符进行URL编码。比如空格要替换成
%20,上面示例中的My Outlook Connection编码后应为My%20Outlook%20Connection。 - 模糊匹配支持:除了
eq(精确匹配),你还可以用contains做模糊筛选,比如筛选名称包含"Outlook"的连接:$filter=contains(properties/displayName, 'Outlook') - 限定资源类型(可选):如果只想返回逻辑应用连接资源,可以在筛选条件里加上资源类型限定,避免返回其他无关资源:
$filter=resourceType eq 'Microsoft.Web/connections' and properties/displayName eq 'My Outlook Connection' - API版本兼容性:你使用的
2018-02-01版本支持该筛选语法,但如果后续遇到问题,建议尝试升级到较新的API版本(比如2021-04-01),新版本通常会有更完善的OData支持。
为什么之前的$expand尝试失败?
$expand参数在Azure RM API中主要用于展开关联资源或特定扩展属性(比如资源的identity),但properties属于资源的基础响应字段,默认就会返回,所以不需要展开。错误的$expand参数值(比如ResourceProperties)会直接导致请求无效,因为API并不支持这个选项。
内容的提问来源于stack exchange,提问作者Saravanakumar Baskaran
相关产品推荐
相关产品推荐

