【问题标题】:Proxy for MSGraph APIsMSGraph API 的代理
【发布时间】:2019-01-07 17:54:45
【问题描述】:

我正在尝试创建一个适配器(将充当传递的 WEB API) 用于调用 MS Graph API 来管理我的 Active Directory。

应用程序和用户等 AD 对象将被定制以满足我们的应用程序需求(删除一些属性,添加一些扩展属性等),并且在调用之前和之后,我们的适配器层将发生从我们的应用程序特定对象到 AD 对象的转换MS Graph API。

MS 图形 API currently supports OData queries。 应用程序和用户将按页面读取。 如果我必须在通过 Web API 层中提供相同的 OData 选项,我该怎么做?

  • API A 支持 OData 查询。
  • API B 调用 API A 中支持 OData 查询的方法。
  • API B 向客户端公开。当客户端从 API B 调用方法时 使用 OData $Filter,必须返回结果。

如何支持 API B 中的 OData 选项?

提前致谢。

【问题讨论】:

标签: rest asp.net-web-api odata microsoft-graph-api


【解决方案1】:

好吧,我不确定我是否正确地回答了您的问题,但据我了解,您只想将 API 调用代理到 ​​MS Graph 并即时对响应进行一些更改。

OData 查询只是简单的查询参数(请参阅OData tutorial)。因此,基本上,您只需在代理中获取这些查询参数并将它们转发到 MS Graph。然后,您将获得的响应将与原始查询相符。

但是,根据您处理数据的方式,您最终可能会不符合用户查询。例如:

  • 用户进行了$select(Id) 查询,但您的逻辑添加了自定义属性Foo。用户只是想要Id,但你还是添加了Foo
  • 用户进行了$orderby Name asc 查询,但您的逻辑修改了属性Name。它可能不会按照您的逻辑排序。
  • 用户想要对Foo 属性进行$filter 查询。 MS Graph 会抱怨,因为它不知道 Foo 属性。

如果您想处理这些情况,那么您必须解析不同的 OData 查询并相应地调整您的逻辑。 $orderby$top/$skip$count$expand$select 应该非常简单; $filter$search 需要更多的工作。

【讨论】:

    【解决方案2】:

    谢谢。我一直在寻找解决方案。 https://community.apigee.com/questions/8642/how-do-we-fetch-the-query-parameters-odata-standar.html

    我想了解处理 OData 请求的标准方法,而不是解析 URL 来获取 OData 查询参数。 现在我正在执行以下操作来提取 OData 查询参数并将它们传递给 MSGraph API。 字符串 strODataQuery = String.Join("&", HttpContext.Request.Query.Where(kvp => kvp.Key.StartsWith("$")) .Select(kvp => String.Format("{0}={1 }", kvp.Key, Uri.EscapeDataString(kvp.Value))));

    我在检索结果后执行转换。

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2019-05-13
      • 2020-01-11
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多