Как создать пакетный запрос к gmail api в angular 7 - PullRequest
0 голосов
/ 01 января 2019

Коротко и сладко ... Какой код я могу использовать в angular 7 для выполнения пакетных запросов к конечной точке пакетного API gmail?

Мне удалось успешно выполнить пакетный запрос с помощью gmail apiиспользуя почтальон ... используя сырой формат тела, но не могу создать правильный почтовый запрос к конечной точке пакета API gmail из моего приложения angular 7.Я получаю ответ об ошибке 400 из-за неверного синтаксиса.

В почтальоне это так же просто, как установить токен с авторизацией: 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 Ответ

0 голосов
/ 11 января 2019
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-запроса в тело пакета.

...