无法检索' ContentId' Office365 REST Api中附件的属性

时间:2016-02-03 12:00:06

标签: rest office365-restapi

我试图在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不存在,这与specifications相矛盾。

编辑:以下是完整的请求:

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

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

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

您发布的请求是获取邮件规范而不是附件。由于您需要获取内容ID,因此您需要使用任何必需参数为请求添加/附件。

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

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

希望这有帮助。

答案 1 :(得分:1)

如果有人对Microsoft图形有相同的问题,则需要通过以下过滤器:

$select=microsoft.graph.fileAttachment/contentId

像这样:

GET https://graph.microsoft.com/v1.0/me/messages/attachments?$select=microsoft.graph.fileAttachment/contentId

答案 2 :(得分:0)

解决了它。布莱恩的评论提出了答案,我发现了另外一个提示here。 因为' ContentId'是FileAttachment的一个属性,您需要在请求中指定它,如下所示:

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

这就是诀窍。感谢您的建议。