根据原始code中包含的文档,我尝试访问API管理并过滤特定产品:
credentials = ServicePrincipalCredentials(
client_id=clientId,
secret=secret,
tenant=tenantId)
client = ApiManagementClient(credentials, subscription_id)
products = client.product.list_by_service(resource_group_name,service_name,filter="displayName eq 'INTERNAL'")
根据我的文档,这似乎是有效的。
但是我收到此错误:
azure.mgmt.apimanagement.models.error_response_py3.ErrorResponseException:指定了无效的过滤器子句:“ DisplayName eq'INTERNAL”。
答案 0 :(得分:0)
我尝试检查Azure API管理Python SDK的源代码,其中包括product_operations.py
,[error_response_py3.py][1]
,msrest-for-python/msrest/serialization.py
,没有明显的问题。
然后,在尝试测试ApiManagement.product.list_by_service
函数的相对REST API Product - List By Service
之后,我发现问题可能是一个错误。
$filter
URI参数中可以使用六个字段:name
,displayName
,description
,terms
,state
和groups
。除了groups
(我不知道如何为$filter
提供相应的表达式)之外,我测试了其余五个字段,只有displayName
不起作用。
api-version
的值为2019-01-01
,我的uri参数中%24filter=displayName%20eq%20%27Starter%27
的json响应如下。
{
"error": {
"code": "ValidationError",
"message": "Invalid filter clause specified: 'displayName eq 'Starter''.",
"details": null
}
}
因此,我认为使用Azure API管理Python SDK并不是您的错误,这是一个似乎未实现或其他原因的错误。