3

我正在尝试在 Office365 rest api 中检索附件。因为我想避免下载整个附件,所以我使用了一个 select 子句来避免下载 ContentBytes 属性中的内容:

    $select="ContentId,ContentType,Id,IsInline,Name,Size"

所以基本上,我想检索除内容之外的所有内容。但是,这会给出以下错误消息(json):

    { 
       "error": 
          {
           "code": "RequestBroker-ParseUri",
           "message": "Could not find a property named 'ContentId' on type 'Microsoft.OutlookServices.Attachment'."
          }
    }

它告诉我 ContentId 不存在,这与规范相矛盾。

编辑:这是完整的请求:

    GET /api/v2.0/me/messages/AAMkAGZlZjI3N2I3LTg1YWUtNDFiNC05MGI0LTVjYTVmZGI5NGI2YQBGAAAAAABzr8uDji9LRqgTCEsDv22wBwBWTXbvZW0dTKuxUGxpK4-lAAAAAAEMAABWTXbvZW0dTKuxUGxpK4-lAAC5QnKBAAA=/attachments?%24select=ContentId%2CContentType%2CId%2CIsInline%2CName%2CSize 

更奇怪的是,当我在不指定任何选择子句的情况下执行相同的查询时,它会返回一个完整的附件对象,包括一个 ContentId。

有人可以帮忙吗?

4

3 回答 3

8

如果有人对 microsoft graph 有相同的问题,您需要通过此过滤器:

$select=microsoft.graph.fileAttachment/contentId

像这样:

GET https://graph.microsoft.com/v1.0/me/messages/attachments?$select=microsoft.graph.fileAttachment/contentId
于 2018-09-12T00:45:49.160 回答
1

您发布的请求正在获取消息规范,而不是附件。由于您需要获取内容 ID,因此您需要使用任何必需的参数将 /attachments 添加到请求中。

获取https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments/{attachment_id}

因此,请将附件添加到您的查询中,以便能够获取内容 ID。

希望这可以帮助。

于 2016-02-04T02:15:21.543 回答
1

解决了。Brian 的评论提出了答案,我在这里找到了一个额外的提示。由于 'ContentId' 是 FileAttachment 的属性,因此您需要在请求中指定它,如下所示:

    $select="Microsoft.OutlookServices.FileAttachment/ContentId,ContentType,Id,IsInline,Name,Size"

那成功了。感谢您的建议。

于 2016-02-04T05:10:36.403 回答