Выполнение пакетного запроса API для получения нескольких тел электронной почты в формате MIME - PullRequest
1 голос
/ 06 февраля 2020

Outlook REST API предоставляет конечную точку /me/messages/:message_id:/$value для запроса «сырых» тел электронных писем (старые добрые MIME-кодированные тела электронной почты). Однако, когда я пытаюсь запросить тела нескольких писем, используя Batch API (https://outlook.office.com/api/v2.0/$batch), я получаю только одно тело в ответе (я полагаю, тело первого письма в запросе). Пример тела запроса:

--07edf27e-0552-45db-9a75-add15681b61b
Content-Type: application/http
MIME-Version: 1.0
Content-Transfer-Encoding: binary

GET /api/v2.0/me/messages/AAMkADllYjZhMmZhLWRiMWQtNGY5OS1hM2NiLTA3NDZmODA4NzZiMQBGAAAAAABdR0VqIHc_T6bmj6YLprUhBwDPSIJ3m0xMRZntj-YB8UfpAAAAAAEMAADPSIJ3m0xMRZntj-YB8UfpAAOHtNrzAAA=/$value HTTP/1.1

--07edf27e-0552-45db-9a75-add15681b61b
Content-Type: application/http
MIME-Version: 1.0
Content-Transfer-Encoding: binary

GET /api/v2.0/me/messages/AAMkADllYjZhMmZhLWRiMWQtNGY5OS1hM2NiLTA3NDZmODA4NzZiMQBGAAAAAABdR0VqIHc_T6bmj6YLprUhBwDPSIJ3m0xMRZntj-YB8UfpAAAAAAEMAADPSIJ3m0xMRZntj-YB8UfpAAOHtNryAAA=/$value HTTP/1.1

--07edf27e-0552-45db-9a75-add15681b61b
Content-Type: application/http
MIME-Version: 1.0
Content-Transfer-Encoding: binary

GET /api/v2.0/me/messages/AAMkADllYjZhMmZhLWRiMWQtNGY5OS1hM2NiLTA3NDZmODA4NzZiMQBGAAAAAABdR0VqIHc_T6bmj6YLprUhBwDPSIJ3m0xMRZntj-YB8UfpAAAAAAEMAADPSIJ3m0xMRZntj-YB8UfpAAOE7qpYAAA=/$value HTTP/1.1

--07edf27e-0552-45db-9a75-add15681b61b--

И ответ имеет тип содержимого "обычный \ текст". Детали запроса / ответа:

{'Content-Length': '998', 'Accept-Encoding': 'gzip, deflate', 'Accept': u'application/json', 'User-Agent': u'Nimble', 'Connection': 'keep-alive', 'Content-Type': 'multipart/mixed; boundary="e91fd766-955d-4e87-9204-b28b004d3e5e"', 'Authorization': u'Bearer eyJ0eXAiOiJK..'}
ipdb> resp.request.url
'https://outlook.office.com/api/v2.0/me/$batch'
ipdb> resp.headers
{'X-CalculatedBETarget': 'VI1PR09MB2479.eurprd09.prod.outlook.com', 'Rate-Limit-Reset': '2020-02-06T18:49:26.260Z', 'X-Powered-By': 'ASP.NET', 'Transfer-Encoding': 'chunked', 'X-RUM-Validated': '1', 'X-BackEndHttpStatus': '200, 200', 'X-Proxy-RoutingCorrectness': '1', 'X-BeSku': 'WCS5', 'Date': 'Thu, 06 Feb 2020 18:39:10 GMT', 'Rate-Limit-Limit': '10000', 'Rate-Limit-Remaining': '9999', 'X-AspNet-Version': '4.0.30319', 'Server': 'Microsoft-IIS/10.0', 'X-BEServer': 'VI1PR09MB2479', 'X-DiagInfo': 'VI1PR09MB2479', 'X-FEServer': 'VI1PR0502CA0025, MWHPR10CA0071', 'X-MailboxGuid': '9eb6a2fa-db1d-4f99-a3cb-0746f80876b1', 'X-FEProxyInfo': 'VI1PR0502CA0025.EURPRD05.PROD.OUTLOOK.COM', 'x-ms-appId': 'b27e9f81-dbc4-4d4a-923a-3eacaae45241', 'request-id': 'ff7b1bce-5d41-450f-800a-d2de6f9ae2f0', 'X-Proxy-BackendServerStatus': '200', 'X-CalculatedFETarget': 'VI1PR0502CU001.internal.outlook.com', 'Cache-Control': 'private', **'Content-Type': 'text/plain'**}

При выполнении того же запроса, но без запроса «необработанных» тел, ответ становится ожидаемого типа содержимого: 'Content-Type': 'multipart/mixed; boundary=batchresponse_e4ca25bf-f9e7-4d69-bc09-139bf2776db0'. Тело запроса:

--006b59ee-e662-46d8-be97-a21a24cc9b08
Content-Type: application/http
MIME-Version: 1.0
Content-Transfer-Encoding: binary

GET /api/v2.0/me/messages/AAMkADllYjZhMmZhLWRiMWQtNGY5OS1hM2NiLTA3NDZmODA4NzZiMQBGAAAAAABdR0VqIHc_T6bmj6YLprUhBwDPSIJ3m0xMRZntj-YB8UfpAAAAAAEMAADPSIJ3m0xMRZntj-YB8UfpAAOHtNrzAAA= HTTP/1.1

--006b59ee-e662-46d8-be97-a21a24cc9b08
Content-Type: application/http
MIME-Version: 1.0
Content-Transfer-Encoding: binary

GET /api/v2.0/me/messages/AAMkADllYjZhMmZhLWRiMWQtNGY5OS1hM2NiLTA3NDZmODA4NzZiMQBGAAAAAABdR0VqIHc_T6bmj6YLprUhBwDPSIJ3m0xMRZntj-YB8UfpAAAAAAEMAADPSIJ3m0xMRZntj-YB8UfpAAOHtNryAAA= HTTP/1.1

--006b59ee-e662-46d8-be97-a21a24cc9b08
Content-Type: application/http
MIME-Version: 1.0
Content-Transfer-Encoding: binary

GET /api/v2.0/me/messages/AAMkADllYjZhMmZhLWRiMWQtNGY5OS1hM2NiLTA3NDZmODA4NzZiMQBGAAAAAABdR0VqIHc_T6bmj6YLprUhBwDPSIJ3m0xMRZntj-YB8UfpAAAAAAEMAADPSIJ3m0xMRZntj-YB8UfpAAOE7qpYAAA= HTTP/1.1

--006b59ee-e662-46d8-be97-a21a24cc9b08--
ipdb> resp.headers
{'X-CalculatedBETarget': 'VI1PR09MB2479.eurprd09.prod.outlook.com', 'Rate-Limit-Reset': '2020-02-06T18:49:26.260Z', 'X-Powered-By': 'ASP.NET', 'Transfer-Encoding': 'chunked', 'X-RUM-Validated': '1', 'OData-Version': '4.0', 'X-BackEndHttpStatus': '200, 200', 'X-Proxy-RoutingCorrectness': '1', 'X-BeSku': 'WCS5', 'Date': 'Thu, 06 Feb 2020 18:45:54 GMT', 'Rate-Limit-Limit': '10000', 'Rate-Limit-Remaining': '9984', 'X-AspNet-Version': '4.0.30319', 'Server': 'Microsoft-IIS/10.0', 'X-BEServer': 'VI1PR09MB2479', 'X-DiagInfo': 'VI1PR09MB2479', 'X-FEServer': 'VI1PR03CA0059, MWHPR04CA0069', 'X-MailboxGuid': '9eb6a2fa-db1d-4f99-a3cb-0746f80876b1', 'X-FEProxyInfo': 'VI1PR03CA0059.EURPRD03.PROD.OUTLOOK.COM', 'x-ms-appId': 'b27e9f81-dbc4-4d4a-923a-3eacaae45241', 'request-id': '7f5dcc0f-4109-48a1-9948-39a5ad7471e6', 'X-Proxy-BackendServerStatus': '200', 'X-CalculatedFETarget': 'VI1PR03CU002.internal.outlook.com', 'Cache-Control': 'private', 'Content-Type': 'multipart/mixed; boundary=batchresponse_e4ca25bf-f9e7-4d69-bc09-139bf2776db0'}
ipdb> resp.request.url
'https://outlook.office.com/api/v2.0/me/$batch'

Это ошибка в Outlook REST API? Тот же запрос, но к Graph API работает правильно (к сожалению, мы не можем использовать Graph API в производстве).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...