什么时候应该使用 Outlook REST API 与 Microsoft Graph API?

When should I use Outlook REST API vs Microsoft Graph API?

我正在开发一个需要从 Outlook.com 和 Office 365 检索和编辑日历事件的应用程序。我看到有 2 个选项:

  1. Outlook REST API
  2. Microsoft Graph API

它们的界面似乎几乎相同。我看到 Outlook REST API 支持通知(webhooks),Microsoft graph 不支持吗?那么,选择哪一个呢? advantages/disadvantages 是什么?为什么有两个 API?

免责声明:我是 Microsoft 员工。

要从 Outlook.com 检索和编辑日历事件,Microsoft Graph API 和 Outlook REST API 端点都可以工作。如果您计划在生产中使用的应用需要 Webhook,则需要使用 Outlook REST API v2.0 端点。 Microsoft 在 Microsoft Graph 的预览版中提供了 Webhooks,并且正在努力将它们带到一般可用性 (GA) 中,以便您将来可以在您的生产应用程序中使用它们。如果您的应用不需要 Webhooks,则可以使用 Microsoft Graph v1.0。

换句话说,完全支持 Microsoft Graph 和 Outlook REST API 端点。

现在谈谈为什么有 2 个端点:Outlook REST API v1.0 于 2014 年 10 月推出,Microsoft 于 2015 年 11 月提供了改进的 v2.0 版本。它拥有最新和最好的 Outlook通过 APIs 公开的功能。 Microsoft Graph v1.0 是一个方便的端点,我们于 2015 年 11 月推出,供应用访问来自多个 Microsoft 服务(例如 Outlook、OneDrive 和 Azure Active Directory)的信息。事实上,当您向 Microsoft Graph v1.0 端点发出任何 Outlook 功能的请求时,该请求会在幕后路由到 Outlook REST API v2.0 端点。所以 API 组在设计上是相同的!

Microsoft 正在努力缩小各个服务 API 端点之间的任何差距(Outlook REST APIs、OneDrive APIs、AAD Graph API 等)和 Microsoft Graph,但会有一个小的增量,原因有二。

  1. 个别服务可能具有名称相同但含义不同的实体。例如,Outlook 和 OneDrive 都有一个“文件夹”实体,但它们的含义不同。在这种情况下,Microsoft 仍然需要合理化 Microsoft Graph API 架构,让您清楚地知道在通过 Microsoft Graph API 时访问的是哪个实体。 “文件夹”作为 Outlook API v1.0 端点可用,在 Outlook API v2.0 端点中被重命名为 MailFolder,它也通过 Microsoft Graph API v1.0。因此,在通过 Microsoft Graph 公开相同的功能或 API 之前,您可能总是会看到某些功能或 API 在单个服务终结点中公开了一段时间。
  2. 一些横向能力;例如,在 Microsoft Graph 中可用之前,Webhooks 可能会在服务终结点的预览版或 GA 中更早可用。这是因为 Microsoft Graph API 是比单个服务端点更新的端点。随着时间的推移,这个差距列表有望减少到零。

Microsoft 建议您使用 Microsoft Graph,只要它具有生产中需要的 features/APIs 来支持您的生产应用程序,或者至少在预览版中支持应用程序开发。这使你将来可以轻松扩展需要访问多个 Microsoft 服务的应用程序功能,而无需更改终结点。您可以使用单独的服务端点,例如 Outlook REST API 如果您需要仅在单独的服务端点中可用的功能,无论是在生产 (v2.0) 还是作为预览 (beta)。