如何通过Azure API Management API筛选特定状态的订阅(遇属性不支持筛选错误)
解决Azure APIM获取特定状态订阅列表的问题
你遇到的问题是对的:ARM API的/users/{userId}/subscriptions端点确实不支持通过state属性进行筛选,官方当前的API设计里这个属性不在可过滤字段范围内。
有两种可行的解决办法:
方法一:使用APIM原生管理API(推荐)
APIM自身的管理API支持对订阅状态进行筛选,端点路径为:
GET https://{servicename}.management.azure-api.net/subscriptions?filter=state eq 'submitted'&api-version=2022-08-01
如果需要限定到特定用户,可以在过滤条件里加上用户ID:
GET https://{servicename}.management.azure-api.net/subscriptions?filter=state eq 'submitted' and userId eq '/users/1'&api-version=2022-08-01
这个端点的认证方式可以使用APIM实例的管理密钥,或者通过Azure AD OAuth令牌进行授权。
方法二:客户端本地筛选
如果必须使用ARM API的话,只能先获取该用户的所有订阅列表,再在客户端代码中自行过滤state属性为submitted的条目。示例逻辑(伪代码):
# 先调用ARM API获取所有订阅 all_subscriptions = arm_api_get("/users/1/subscriptions") # 本地筛选目标状态的订阅 target_subscriptions = [sub for sub in all_subscriptions if sub["properties"]["state"] == "submitted"]
内容的提问来源于stack exchange,提问作者Blingers
相关产品推荐
相关产品推荐

