Вы можете использовать Microsoft Search API для поиска файлов, хранящихся в SharePoint или OneDrive, он поддерживает Keyword Query Language (KQL для краткости) синтаксис в терминах поисковых запросов, например :
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"microsoft.graph.externalFile"
],
"query": {
"query_string": {
"query": "contoso AND filetype:docx"
}
},
"from": 0,
"size": 25
}
]
}
Вот тот же пример, преобразованный в C# версию:
Примечание :
, поскольку Microsoft Search API только доступно в версии beta
на данный момент, вам нужно будет создать запрос самостоятельно, если вы используете Graph Client Library .
Поддерживаются только следующие разрешения
Delegated (work or school account) Mail.Read, Files.Read.All, Calendars.Read, ExternalItem.Read.All
var graphClient = AuthManager.GetClient("https://graph.microsoft.com/");
var requestUrl = "https://graph.microsoft.com/beta/search/query";
var searchRequest = new
{
requests = new[]
{
new
{
entityTypes = new[] {"microsoft.graph.driveItem"},
query = new
{
query_string = new
{
query = "contoso AND filetype:docx"
}
},
from = 0,
size = 25
}
}
};
//construct a request
var message = new HttpRequestMessage(HttpMethod.Post, requestUrl);
var jsonPayload = graphClient.HttpProvider.Serializer.SerializeObject(searchRequest);
message.Content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");
await graphClient.AuthenticationProvider.AuthenticateRequestAsync(message);
var response = await graphClient.HttpProvider.SendAsync(message);
//process response
var content = await response.Content.ReadAsStringAsync();
var result = JObject.Parse(content);
var searchItems = result["value"].First["hitsContainers"].First["hits"].Select(item =>
{
var itemUrl = (string) item["_source"]["webUrl"];
return itemUrl;
});
Ссылки