Как создать пакетный запрос к gmail api в angular 7
Коротко и сладко... Какой код я могу использовать в angular 7 для выполнения пакетных запросов к конечной точке пакетного API gmail?
Я смог успешно выполнить пакетный запрос с помощью API gmail, используя почтальон... используя формат raw body, но, похоже, не могу создать правильный почтовый запрос для конечной точки пакетного API gmail из моего приложения angular 7. Я получаю сообщение об ошибке 400 из-за неверного синтаксиса.
В почтальоне это так же просто, как установить токен с помощью Authorization: Bearer и Content-Type: multipart/mixed; border ="foo_bar", тогда делает тело необработанным запросом с:
--foo_bar
Content-Type: application/http
GET /gmail/v1/users/me/threads/16805106cf1751bc
--foo_bar
Content-Type: application/http
GET /gmail/v1/users/me/threads/16804cfeaeb94c4a
--foo_bar--
Я попробовал это в угловых 7:
private readonly BATCH_API_URL: string = 'https://www.googleapis.com/batch/gmail/v1';
batchTest() {
let authToken = this.authService.getToken();
let body = `--foo_bar
Content-Type: application/http
GET /gmail/v1/users/me/threads/16805106cf1751bc
--foo_bar
Content-Type: application/http
GET/gmail/v1/users/me/threads/16804cfeaeb94c4a
--foo_bar--`
this.httpClient.post(this.BATCH_API_URL, body, {
headers: new HttpHeaders({
'Authorization': `Bearer ${authToken}`,
'Content-Type': `multipart/mixed; boundary="foo_bar"`
})
}).subscribe(response => {
console.log(response);
})
}
Я также попробовал:
let body = String.raw`--foo_bar\r\nContent-Type: application/http\r\n\r\nGET /gmail/v1/users/me/threads/16805106cf1751bc\r\n\r\n--foo_bar--`
... и несколько других длинных кадров, таких как преобразование строки в BufferArray и передача ее в виде тела...
Я пытаюсь понять, как правильно сформировать тело почтового запроса к конечной точке пакетного API gmail, чтобы я мог отправлять и получать пакетные запросы... Очень благодарен всем, кто может помочь мне решить эту проблему.
1 ответ
let body ='--foo_bar\n' +
'Content-Type: application/http\n\n' +
'GET https://www.googleapis.com/gmail/v1/users/me/threads/16805106cf1751bc\n' +
'--foo_bar\n' +
'Content-Type: application/http\n\n' +
'GET https://www.googleapis.com/gmail/v1/users/me/threads/16805106cf1751bc\n' +
'--foo_bar--'
У тебя была похожая проблема. Исправлено это путем объединения группы строк для тела вместо использования многострочной строки (`). Который, казалось, добавил в нежелательные пробелы и разрывы строк
Также включив полный HTTP-запрос в тело пакета.