Сравнение конечных точек REST API Outlook и Microsoft Graph
Интерфейсы REST API Outlook доступны как в Microsoft Graph , так и в конечной точке API Outlook (https://outlook.office.com/api
). Эти API в общем обеспечивают одинаковые функциональные возможности и используют одни и те же типы ресурсов.
Примечание.
API Outlook REST устарели.
Конечные точки REST Outlook будут полностью списаны в марте 2024 г. Миграция существующих приложений для использования Microsoft Graph. Сюда не входит аудитория маркеров OAuth2, как описано в разделе Проверка подлинности подключения IMAP, POP или SMTP с помощью OAuth.
Какую конечную точку выбрать?
Используйте Microsoft Graph, Outlook REST версии 2.0 находится на пути к списанию. Конечная точка Microsoft Graph позволяет получать доступ к Outlook и многим другим службам и функциям, включая другие службы Office 365, Enterprise Mobility + безопасности и Windows 10. Конечная точка Microsoft Graph позволяют приложению получить маркер доступа для обращения к данным Outlook и других ресурсов без необходимости создавать несколько запросов на получение маркера.
Функциональные различия
На текущий момент некоторые функции доступны только в конечной точке Outlook или представлены в Microsoft Graph только в бета-версии.
Примечание.
Мы постоянно работаем над тем, чтобы включить в Microsoft Graph все функции, доступные в настоящее время в конечной точке Outlook. Периодически проверяйте этот список, поскольку он обновляется.
Функция | Разница между конечными точками |
---|---|
Задачи Outlook | Доступ к задачам пользователей в Microsoft Graph предоставлен через API To Do |
Расширенные уведомления | Интерфейс API Outlook позволяет разработчикам запрашивать включение определенных полей в полезные данные уведомления с помощью параметра $select . В настоящее время Microsoft Graph поддерживает эту функцию только в бета-версии конечной точки, планируя выпустить ее до версии 1.0 в ближайшее время. |
Потоковые уведомления | API Outlook поддерживает потоковые уведомления в предварительном варианте для конечной точки бета-версии. Microsoft Graph не поддерживает эту функцию и не входит в дорожную карту. |
Перемещение из конечной точки Outlook в Microsoft Graph
API-интерфейсы конечных точек Microsoft Graph и Outlook очень похожи. Однако есть некоторые отличия, которые следует учитывать, особенно в том случае, если вы переходите на Microsoft Graph или используете обе конечные точки в одном приложении.
Версии API
В случае API Microsoft Graph доступны версии v1.0
и beta
, тогда как в случае Outlook — версии v1.0
, v2.0
и beta
. Версия v1.0
Microsoft Graph соответствует версии v2.0
Outlook, а версия beta
Microsoft Graph — версии beta
Outlook.
Области OAuth
Несмотря на то что конечные точки Microsoft Graph и Outlook используют маркеры, предоставленные Azure AD, и используются одинаковые разрешения, способ запроса этих разрешений приложением немного отличается для каждой конечной точки.
Конечная точка OAuth2 Azure версии 2
Приложения, использующие конечную точку Azure AD версии 2.0 для OAuth2, требуют области разрешений в параметре scope
в запросе на проверку подлинности или на получение маркера.
- Для Microsoft Graph приложения указывают разрешения с помощью префикса
https://graph.microsoft.com/
. Например, приложение может запросить разрешениеMail.Read
путем включенияhttps://graph.microsoft.com/Mail.Read
в параметрscope
. - Для конечной точки Outlook приложения указывают разрешения с помощью префикса
https://outlook.office.com/
. Например, приложение может запросить разрешениеMail.Read
путем включенияhttps://outlook.office.com/Mail.Read
в параметрscope
.
Примечание.
Если домен не включен в область, предполагается использование Microsoft Graph.
Маркеры, выпущенные для одной конечной точки, не подходят для другой. Кроме того, в одном запросе нельзя объединять разрешения для одной конечной точки с разрешениями для другой.
Конечная точка Azure AD версии 2.0 поддерживает только поток учетных данных клиента для конечной точки Microsoft Graph. Приложения, требующие применения маркера только для приложения с конечной точкой Outlook, должны использовать конечную точку Azure AD версии 1.0.
Конечная точка OAuth2 Azure версии 1
Приложения, использующие конечную точку Azure AD версии 1.0, указывают необходимые разрешения во время регистрации приложения на портале Azure.
- Для Microsoft Graph выберите API Microsoft Graph при добавлении необходимых разрешений.
- Для конечной точки Outlook выберите API Exchange Online в Office 365 при добавлении необходимых разрешений.
Имена свойств для ресурсов
Ресурсы в microsoft Graph и Outlook в значительной степени совпадают. Однако для этих двух конечных точек по-разному используется регистр в именах свойств. Microsoft Graph предусматривает применение для имен свойств "верблюжьего" стиля (camelCase), тогда как в случае Outlook все части пишутся с прописной буквы (PascalCase). При выполнении преобразования между этими двумя конечными точками необходимо просто изменить регистр. Имена измененных свойств указываются в таблице ниже.
Например, ресурс message в Microsoft Graph определяет свойства как subject
, from
и receivedDateTime
. В конечной точке Outlook эти свойства будут именоваться Subject
, From
и ReceivedDateTime
.
Изменяемые имена свойств
Следующие имена свойств различны для Microsoft Graph и Outlook.
Тип ресурса | Свойство Microsoft Graph | Свойство Outlook |
---|---|---|
contact |
mobilePhone |
MobilePhone1 |
Отслеживание изменений (синхронизация)
Обе конечные точки поддерживают запрашивание изменений коллекций, касающихся состояния синхронизации. Хотя функциональные возможности одинаковы, методы слегка разнятся.
В конечной точке Microsoft Graph изменения запрашиваются с использованием разностных запросов. Это реализовано как функция delta
в коллекции.
В конечной точке Outlook изменения запрашиваются путем добавления заголовка в обычные запросы к коллекции ресурсов.
Совмещение
Обе конечные точки поддерживают совмещение до 20 отдельных запросов в одном HTTP-запросе.
При совмещении в Microsoft Graph преобразуются несколько запросов API в тело JSON с типом контента application/json
.
Совмещение конечных точек Outlook поддерживает не только формат JSON, но и формат составного тела с типом контента multipart/mixed
.
Пример: извлечение сообщения
Рассмотрим простой пример. В этом сценарии веб-приложение запрашивает список сообщений в пользовательской папке "Входящие".
Microsoft Graph
Сначала выполняется вход пользователя для авторизации приложения. Так как приложение использует область Mail.Read
Microsoft Graph, URL-адрес авторизации выглядит следующим образом:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?scope=openid+Mail.Read&response_type=code&client_id=<SOME GUID>&redirect_uri=<REDIRECT URL>
Как только у приложения появляется маркер доступа, оно отправляет следующий запрос:
GET https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages?$top=1&$select=subject,from,receivedDateTime,isRead
Accept: application/json
Authorization: Bearer <token>
Сервер возвращает отклик:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('b63d5fb9-4f43-44c4-8f9d-fd0727842876')/mailFolders('inbox')/messages(subject,from,receivedDateTime,isRead)",
"@odata.nextLink": "https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages?$top=1&$select=subject%2cfrom%2creceivedDateTime%2cisRead&$skip=1",
"value": [
{
"@odata.etag": "W/\"CwAAABYAAACd9nJ/tVysQos2hTfspaWRAAD8ujHV\"",
"id": "AAMkAGI2...",
"receivedDateTime": "2015-11-03T03:21:04Z",
"subject": "Scrum",
"isRead": false,
"from": {
"emailAddress": {
"name": "user0TestUser",
"address": "user0@contoso.com"
}
}
}
]
}
Outlook
Сначала выполняется вход пользователя для авторизации приложения. Так как приложение использует область https://outlook.office.com/Mail.Read
Outlook, URL-адрес авторизации выглядит следующим образом:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?scope=openid+https%3A%2F%2Foutlook.office.com%2Fmail.read&response_type=code&client_id=<SOME GUID>&redirect_uri=<REDIRECT URL>
Как только у приложения появляется маркер доступа, оно отправляет следующий запрос:
GET https://outlook.office.com/api/v2.0/me/mailfolders/inbox/messages?$top=1&$select=Subject,From,ReceivedDateTime,IsRead
Accept: application/json
Authorization: Bearer <token>
Сервер возвращает отклик:
{
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders('inbox')/Messages(Subject,From,ReceivedDateTime,IsRead)",
"@odata.nextLink": "https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders('inbox')/Messages(Subject,From,ReceivedDateTime,IsRead)",
"value": [
{
"@odata.etag": "W/\"CwAAABYAAACd9nJ/tVysQos2hTfspaWRAAD8ujHV\"",
"Id": "AAMkAGI2...",
"ReceivedDateTime": "2015-11-03T03:21:04Z",
"Subject": "Scrum",
"IsRead": false,
"From": {
"EmailAddress": {
"Name": "user0TestUser",
"Address": "user0@contoso.com"
}
}
}
]
}