要过滤 Microsoft Graph API 响应,文档建议使用
filter
查询选项。
这里我在
startswith
端点上使用了 endswith
和 '/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"
}
}
}
要将 $filter 与endsWith一起使用,您需要:
示例:'https://graph.microsoft.com/v1.0/users?$count=true&ConsistencyLevel=eventual&$filter=endswith(mail,'@hotmail.com')'
**它适用于邮件和 userPrincipalName,但不适用于 displayName
复制了这个完全相同的查询(在查询参数或标头参数中使用 ConsistencyLevel,但无法使其工作。我用来请求授权令牌的应用程序具有 Users.ReadWrite.All 权限和 User.Read。全部。
在邮递员中:
{
"error": {
"code": "Request_UnsupportedQuery",
"message": "Unsupported property filter clause operator 'SuffixMatch'.",
"innerError": {
"date": "2022-07-27T13:22:38",
"request-id": "3f509514-4e77-4eb1-8557-0fe102d502f5",
"client-request-id": "3f509514-4e77-4eb1-8557-0fe102d502f5"
}
}
}
----- 编辑 ------
刚刚在这里找到了我的答案:https://learn.microsoft.com/en-us/graph/query-parameters
Azure AD B2C 租户不支持使用 $count。
Microsoft Graph 有一组棘手的 API 端点。 “endswith”仅适用于“mail”字段,不适用于其他字段。 “startswith”几乎适用于所有领域。 “包含”根本不起作用。
或者,您可以使用 $search,这可能有一些额外的功能