使用 GraphServiceClient 将 Stringsegment 附加到 MS Graph 请求
Append a Stringsegment to a MS Graph Request with GraphServiceClient
是否可以将段附加到 MS GraphServiceClient 请求并获取该资源?
场景:
我想获取一个组的根站点(更具体地说是它的 weburl 属性)
https://graph.microsoft.com/v1.0/groups/{group-id}/sites/root
但无法使用 QueryBuilder 附加 /root 段,并且不允许枚举站点并引发异常
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 Class 但这会引入不同的模式来获取图形资源,我想避免这种情况。
编辑 - 解决方案
似乎您必须使用 Microsoft.Graph 命名空间下可用的 RequestBuilder,直到找到一个与您的请求类型匹配的 RequestBuilder,所有其他 return null。
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();
也许你可以尝试这样的事情并传入 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();
是否可以将段附加到 MS GraphServiceClient 请求并获取该资源?
场景: 我想获取一个组的根站点(更具体地说是它的 weburl 属性)
https://graph.microsoft.com/v1.0/groups/{group-id}/sites/root
但无法使用 QueryBuilder 附加 /root 段,并且不允许枚举站点并引发异常
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 Class 但这会引入不同的模式来获取图形资源,我想避免这种情况。
编辑 - 解决方案
似乎您必须使用 Microsoft.Graph 命名空间下可用的 RequestBuilder,直到找到一个与您的请求类型匹配的 RequestBuilder,所有其他 return null。
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();
也许你可以尝试这样的事情并传入 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();