2016-07-07 28 views
0

Angesichts einer Liste von Ids (aka ItemIds) wie können wir die E-Mails effizient mit OutlookREST API abrufen?Abrufen von Postsendungen mit Id und Outlook REST API

Ich habe versucht, die folgende Anfrage zu fälschen.

https://outlook.office365.com/api/beta/me/MailFolders/<somefolderId>/messages?$filter=((Id eq 'firstId') or (Id eq 'secondId') or (Id eq 'thirdId')) 

Aber ich erhielt eine BadRequest 400 Fehler: „Die Eigenschaft‚Id‘unterstützt keine Filter“, das ist ganz klar.

Als Workaround verwende ich die InternetMessageId (Es ist mir egal, welche "Kopie" der E-Mail zurückgegeben wird). Gibt es eine Möglichkeit, die ID zu verwenden, um eine bessere Leistung zu erzielen?

Antwort

1

Sie könnten bis zu 20 individuelle GET Anfragen für jede ID in einem batch request tun. Dies ist nur unter dem beta Endpunkt verfügbar.

Etwas wie:

POST https://outlook.office.com/api/beta/$batch HTTP/1.1 

Authorization: Bearer aGFwcHlnQGRr== 
Host: outlook.office.com 
Content-Type: multipart/mixed; boundary=batch_myBatchId 


--batch_myBatchId 
Content-Type: application/http 
Content-Transfer-Encoding: binary 

GET /api/beta/me/messages/{id1} HTTP/1.1 


--batch_myBatchId 
Content-Type: application/http 
Content-Transfer-Encoding: binary 

GET /api/beta/me/messages/{id2} HTTP/1.1 


--batch_myBatchId-- 
+0

Ihnen sehr danken. Wissen, dass InternetMessageId im Beta-Endpunkt eine primäre Eigenschaft des Message-Objekts ist. Wie Sie wissen, ist die Batch-Anfrage für 20 Items auf ItemId wesentlich schneller als das Ausführen eines $ -Filters mit 20er 'oder' Statement auf der 'InternetMessageId'? –

+1

Ich habe keine harten Daten, aber im Allgemeinen würde ich übermäßig komplexe Filter wie diese vermeiden. Ich würde annehmen, dass mit Ids schneller sein würde. –

+0

Vielen Dank für Ihre Einsichten. –