首页 > 解决方案 > Microsoft Graph API - 无法以 endwith 过滤

问题描述

要过滤 Microsoft Graph API 响应,文档建议使用filter查询选项。

在这里,我在端点上使用了startswithendswith字符串函数。'/me/messages'

query = {
    '$filter': "
      startswith(from/emailAddress/address, 'abcd')
      or endswith(from/emailAddress/address, 'gmail.com')"
  }

仅使用startswith返回预期的响应。在将endswith函数添加到过滤器查询时,收到的响应是错误的。

{
  "error": {
    "code": "ErrorInvalidUrlQueryFilter",
    "message": "The query filter contains one or more invalid nodes.",
    "innerError": {
      "request-id": "0d12e1f6-6105-4826-9656-8613f8c167ed",
      "date": "2019-03-14T11:05:56"
    }
  }
}

标签: microsoft-graph-api

解决方案


要将 $filter 与 endsWith 一起使用,您需要:

  1. 将 $count=true 添加到查询参数中
  2. 添加 ConsistencyLevel:最终请求标头

示例:'https://graph.microsoft.com/v1.0/users?$count=true&ConsistencyLevel=eventual&$filter=endswith(mail,'@hotmail.com')'

**它适用于 mail 和 userPrincipalName 但不适用于 displayName


推荐阅读