0

简短而甜蜜的是......我可以在 angular 7 中使用什么代码向 gmail api 批处理端点发出批处理请求?

我已经能够使用邮递员成功地使用 gmail api 发出批处理请求...使用原始正文格式,但似乎无法从我的 angular 7 应用程序中向 gmail api 批处理端点制作正确的发布请求。由于语法无效,我收到错误响应 400。

在邮递员中,它就像使用 Authorization: Bearer和Content-Type: multipart/mixed设置令牌一样简单;boundary="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 并将其作为正文传递...

我正在尝试弄清楚如何正确地将发布请求的正文形成到 gmail api 批处理端点,以便我可以发出和接收批处理请求......非常感谢任何可以帮助我解决这个问题的人。

4

1 回答 1

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 请求。

于 2019-01-11T17:08:47.583 回答