为 Microsoft Graph 创建一个过滤器查询,该查询等效于“包含". [英] Create a filter query for Microsoft Graph that works equivalent to "contains"

查看:17
本文介绍了为 Microsoft Graph 创建一个过滤器查询,该查询等效于“包含".的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I need to create a $filter query for the Microsoft Graph API that searches for a specific word in a string (the display name of users).

For example I'd want to be able to find all users that have "Esteban" in their names:

Luis Esteban
Alphonse Esteban
Esteban Luis
Alphonse Esteban Luis

The following query works, but only returns users that start with "Esteban" in their names, not users that contain "Esteban":

https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'Esteban')

I also tried using contains instead of startswith, but it gives an error response:

{ "error": { "code": "Request_BadRequest", "message": "An unknown function with name 'contains' was found. This may also be a key lookup on a navigation property, which is not allowed.", "innerError": { "request-id": "e5ed5c30-4e62-4497-8976-1d38167e759d", "date": "2018-09-13T23:17:17" } } }

And even though the Microsoft Graph docs say they support OData 4.0, they also say this:

"The contains string operator is currently not supported on any Microsoft Graph resources."

I also tried other commands given by the OData documentation and the construction rules that are supposed to be supported by filter and other query parameters.

In particular I tried combinations of these commands:

startswith
endswith
indexof
substring

but to no success. It seems the MS Graph API has no support for anything except startswith whatsoever.

I tried both v1.0 and the beta endpoints of the API.

Is there any other way, some smart combination of OData 4.0 commands and/or query parameters supported by the MS Graph API, that allows a search equivalent to contains?

PS: You can try out queries with the Graph Explorer here.

解决方案

As you know, Graph API doesn't support your requirement now. My suggestion is to get the user list first and then do in-memory filter. This way also applicable to other no-supported Graph API.

Meanwhile, make sure to vote up the existing feature request in User Voice or submit a new one.

这篇关于为 Microsoft Graph 创建一个过滤器查询,该查询等效于“包含".的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆