Gmail API 返回 400 个带有批处理请求的错误请求
Gmail API returns 400 BadRequest with batch request
我正在尝试向gmail发出批处理http请求(在具有Meteor/HTTP的服务器上),如下所示:
batchGetMessages = (accessToken, ids) => {
let userId = 'me';
let url = `https://www.googleapis.com/batch`;
let boundary = `batch_message_request`;
let body = ``;
_.each(ids, (id) => {
body = `${body}
--${boundary}
Content-Type: application/http
GET /gmail/v1/users/${userId}/messages/${id.id}?format=metadata&fields=id%2Cpayload
`
});
body = `${body}
--${boundary}--`
let options = {
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': `multipart/mixed; boundary="${boundary}"`,
},
content: body,
};
let data = HTTP.post(url, options);
console.log('data: ', data);
}
正文字符串看起来像这样:
--batch_message_request
Content-Type: application/http
GET /gmail/v1/users/me/messages/15375be281102d3d?format=metadata&fields=id%2Cpayload
--batch_message_request
Content-Type: application/http
GET /gmail/v1/users/me/messages/15366f87db6bdfeb?format=metadata&fields=id%2Cpayload
--batch_message_request
Content-Type: application/http
GET /gmail/v1/users/me/messages/15365d62f152dea2?format=metadata&fields=id%2Cpayload
--batch_message_request--
我的请求总是返回 400 错误请求错误。我已经检查了类似的问题,但尚未能够使其正常工作:
在 JavaScript 中为文件上传生成 HTTP 多部分正文
Gmail REST API 批处理支持接收邮件
批处理请求 - 400 错误请求响应
任何帮助或建议将不胜感激。谢谢!
好吧,400 BadRequest 错误似乎是由字符串模板中的换行空格引起的。删除空格使一切正常:
...
/*
the lack of whitespace is impotant in the folllowing string template:
*/
_.each(ids, (id) => {
body = `${body}
--${boundary}
Content-Type: application/http
GET /gmail/v1/users/${userId}/messages/${id.id}? format=metadata&fields=id%2Cpayload`
});
body = `${body}
--${boundary}--`;
...
可能有一种更奇特的方法来维护代码缩进并消除空格,但我还没有寻找它。
相关文章:
- 如何编写一个具有公共标头的批处理
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- Selenium RemoteWebDriver中的批处理/原子操作
- 在Node Webkit应用程序中从DOM单击按钮时运行批处理文件
- Selenium如何批处理许多isElementDisplayed调用
- Ajax/JSON请求php处理页面
- 执行批处理文件的Javascript,该文件包含基于每个会话的环境变量设置
- Windows批处理文件,使用文件中的行在命令中构造参数
- 覆盖批处理IP地址以查找位置
- 请求管道处理错误
- 如何从批处理文件调用一个带有2个参数的java脚本函数,并将结果返回到环境变量
- Gmail API 返回 400 个带有批处理请求的错误请求
- 使用 javascript 使用 fql 进行批处理请求
- Node.js中的批处理请求
- 如何在继续之前构建这些嵌套的异步请求以完成批处理
- 解析API请求计数和批处理:saveAll() destroyAll()等
- 基于已知键数组向Firebase DB发出批处理请求的最有效方法是什么?
- Facebook JS批处理请求返回Null
- AngularJS中的批处理/梳理请求
- OData批处理请求与XMLHTMLRequest