Gmail API 批量获得支持?
Posted
技术标签:
【中文标题】Gmail API 批量获得支持?【英文标题】:Gmail API batch get support? 【发布时间】:2015-04-22 14:26:32 【问题描述】:我正在使用 Gmail API 进行 WEB HTTP 调用。有没有办法批量获取消息内容?
好像messages.list只返回messageIds,messages.get只支持单条消息查询。
列表 API:https://www.googleapis.com/gmail/v1/users/userId/messages 获取接口:https://www.googleapis.com/gmail/v1/users/userId/messages/id
帮帮我~谢谢!
【问题讨论】:
您可以将它们组合成一个 HTTP 请求,而不是单独发送每个调用。您甚至可以对多个用户或多个 Google API 的请求进行分组。单个批处理请求中的调用次数限制为 100 个。如果您需要进行更多调用,请使用多个批处理请求。在批处理developers.google.com/gmail/api/guides/batch?hl=de-LU 上查看此链接,其中包含示例 GET 请求和 PUT 请求 谢谢SGC,这正是我要找的。我真的希望 Gmail 能更好地支持它,这样我们就不需要手动处理这些多部分 POST 调用了。 【参考方案1】:你绝对可以批量处理messages.get(),很多问题已经涵盖了它: https://***.com/search?q=%5Bgmail-api%5D+batch
【讨论】:
【参考方案2】:gmail API 首先只返回messageId
s 以防止负载过重。
使用这些 ID,您可以获取单独的完整消息或发送批量请求以获取一堆消息。
得到partialMessages(message ids)
后使用这个:
List<Messages> fullMessages = getFullyQualifiedMessages(partialMessages);
private List<Message> getFullyQualifiedMessages(List<Message> partialMessages)
try
final JsonBatchCallback<Message> callback = new JsonBatchCallback<Message>()
public void onSuccess(Message message, HttpHeaders responseHeaders)
fullyQualifiedMessageList.add(message);
public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders)
// do what you want if error occurs
;
BatchRequest batch = mService.batch();
for (Message message : partialMessages)
mService.users().messages().get("me", message.getId()).setFormat("full").queue(batch, callback);
batch.execute();
catch (IOException e)
e.printStackTrace();
Log.d(TAG, "Message" + fullyQualifiedMessageList.size());
return fullyQualifiedMessageList;
【讨论】:
以上是关于Gmail API 批量获得支持?的主要内容,如果未能解决你的问题,请参考以下文章
从 Gmail API 批量获取超过 10k 封电子邮件的电子邮件发件人
Stargate REST API 是不是支持 Cassandra 批量查询?