Я использую Microsoft Grapg Api для получения писем из учетных записей Outlook. Мне нужно загрузить вложения, но без содержимого, только поля: id, contentId. Я пытался использовать этот запрос:
GET /me/messages/{id}/attachments?$select=id,contentId
в C #
await graphClient.Me
.Messages[messageId]
.Attachments
.Request()
.Select("id,contentId")
.GetAsync();
К сожалению, я получил ошибку:
Message: Parsing Select and Expand failed.
Inner error:
AdditionalData:
request-id: 8cec4ca6-f265-4d50-97af-3aed484ba058
date: 12/11/2019 9:59:14 AM
ClientRequestId: 8cec4ca6-f265-4d50-97af-3aed484ba058
. Version:2.7.1948.0
Microsoft.Graph.Core: Code: BadRequest
Message: Parsing Select and Expand failed.
Inner error:
AdditionalData:
request-id: 8cec4ca6-f265-4d50-97af-3aed484ba058
date: 12/11/2019 9:59:14 AM
ClientRequestId: 8cec4ca6-f265-4d50-97af-3aed484ba058
IЯ предполагаю, что это потому, что тип вложения не содержит поле contentId
, однако это поле содержит тип FileAttachments, который является производным от вложения.
Кто-нибудь знает, как обойти эту проблему?
ОБНОВЛЕНИЕ: Я нашел решение здесь: Невозможно получить свойство ContentId вложения в Office365 REST Api
, вам нужно использовать Select с дополнительным типом, например так:
$select=microsoft.graph.fileAttachment/contentId,id,...