如何在Azure API管理Python SDK中使用筛选器

时间:2019-07-10 05:27:00

标签: azure azure-api-management azure-sdk-python

根据原始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”。

1 个答案:

答案 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参数中可以使用六个字段:namedisplayNamedescriptiontermsstategroups。除了groups(我不知道如何为$filter提供相应的表达式)之外,我测试了其余五个字段,只有displayName不起作用。

enter image description here

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并不是您的错误,这是一个似乎未实现或其他原因的错误。