Добавить Stringsegment к запросу MS Graph с GraphServiceClient - PullRequest
0 голосов
/ 17 октября 2019

Можно ли добавить сегмент в запрос MS Graph GraphServiceClient и получить этот ресурс?

Сценарий: я хочу получить корневой сайт группы (точнее, его свойство weburl)

https://graph.microsoft.com/v1.0/groups/{group-id}/sites/root

но невозможно добавить / корневой сегмент с QueryBuilder, и перечисление сайтов не допускается и выдает исключение

var task = graphClient.Groups[group.Id].Sites.Request().GetAsync() // exception

Я могу получить строку для запроса

var url = graphClient.Groups[group.Id].Sites.Request().AppendSegmentToRequestUrl("root")

Но тогда мне понадобится метод, для которого я могу предоставить полный URL-адрес графика, например:

graphClient.MakeRequest(url).GetAsync()

Я знаю, что мог бы использовать класс HttpClient, но это привело бы к другому шаблону. чтобы получить ресурсы Graph, и я бы хотел этого избежать.

Правка - Решение

Похоже, что вам нужно поиграть с RequestBuilders, доступными в Microsoft.Graphпространства имен, пока вы не найдете тот, который соответствует вашему запросу, все остальные возвращают ноль.

var requestBuilder = client.Groups["guid-of-group"].Sites;
var url = requestBuilder.AppendSegmentToRequestUrl("root");

GroupRequestBuilder builder = new GroupRequestBuilder(url, client);
var result = await builder.Request().GetAsync();

1 Ответ

1 голос
/ 01 ноября 2019

Возможно, вы можете попробовать что-то подобное, передать graphServiceClient и создать url для нового экземпляра построителя запросов.


// create the url from the builders
var requestBuilder = graphClient.Groups["groupId"].Sites;
var url = request.AppendSegmentToRequestUrl("root");

// we have to create a new builder as the url property cannot be set/modified publicly
GroupSitesCollectionRequestBuilder groupSitesCollectionRequestBuilder = new GroupSitesCollectionRequestBuilder(url, graphClient);

// Make the call
var result = await groupSitesCollectionRequestBuilder.Request().GetAsync();

...