在 storage api 中查找 HTTP Batch 的用法

Posted

技术标签:

【中文标题】在 storage api 中查找 HTTP Batch 的用法【英文标题】:Find usage of HTTP Batch in storage api 【发布时间】:2018-09-14 00:33:42 【问题描述】:

我收到了 Google 的 JSON-RPC and Global HTTP Batch Endpoints are deprecated 通知。在我的例子中,受影响的 api 是“storage@v1”和“Global Batch Endpoints”。

我试图找到被贬低的 api 调用来自哪里。但是我使用了 24 个存储桶和几个访问它的工具。那么有没有办法记录被贬低的电话?我启用了logging for buckets。在执行批量请求和执行单个请求时,我在访问日志中找不到任何差异。

【问题讨论】:

【参考方案1】:

是的“在单个请求中跨多个 API 进行批处理”已停止 Discontinuing support for JSON-RPC and Global HTTP Batch Endpoints

但令人难以理解的是正在停产的究竟是什么。

有两个批处理端点。全球一号www.googleapis.com/batch 以及 API 特定的 www.googleapis.com/batch/<api>/<version>

那么发生了什么变化?

全局批处理端点正在下降。这意味着您将无法再拨打www.googleapis.com/batch。如果您同时发出混合两个 API(例如 Drive 和 Gmail)的批处理请求,那么在更糟糕的情况下,这意味着什么,您将无法再这样做了。

将来您将不得不通过 API 拆分批处理请求。

这会影响你吗?

代码方面,这取决于您当前使用的客户端库。其中一些已经更新为使用单个 api 端点(javascript 和 .net),还有一些尚未更新(我上次检查了 php 和 java)

现在至于您的存储桶,如果我正确理解它们,它们都会插入同一个地方,因此您使用相同的 api 这可能会影响您。您也在使用 Google 的 SDK,他们会不断更新。

注意

这篇博文非常令人困惑,现在 Google 周围有一些内部电子邮件试图弄清楚这对开发人员意味着什么。

【讨论】:

【参考方案2】:

您必须直接或通过代码中的库找到您在哪里执行异构批处理请求。在任何情况下,批处理请求都不会反映在您的存储桶日志中,因为没有 API 或 API 方法本身被弃用,只是一种调用发送它们的方式。

详细说明

您可以将多个对不同 API 的请求捆绑到一个批处理请求中。此批次将被发送到一个 magical Google 服务器,该服务器将批次拆分并将其中的所有 API 请求路由到各自的服务中。

此 Google 服务器将被删除,因此所有内容都必须直接发送到该服务。

你应该怎么做?

我看起来您正在发出异构批处理请求,因为只提到了一项服务,即存储。可能您应该选择以下选项之一。

如果您使用云库 -> 更新它们。

查看您是否正在访问以下网址

www.googleapis.com/batch

并将其替换为适当的 homogeneous 批处理 API,在您的情况下是

www.googleapis.com/batch/storage/v1
如果您使用的是 batchPath,这似乎是一篇 relevant 文章

否则,如果您使用 gapi 进行异构调用,这似乎不是您的情况,请拆分如下:

 request1 = gapi.client.urlshortener(...)
 request2 = gapi.client.storage.buckets.update(...)
 request3 = gapi.client.storage.buckets.update(...)

 heterogeneousBatchRequest = gapi.client.newBatch();
 heterogeneousBatchRequest.add(request1);
 heterogeneousBatchRequest.add(request2);  
 heterogeneousBatchRequest.add(request3);  

变成这样的

 request1 = gapi.client.urlshortener(...)
 urlshortnerbatch = gapi.client.newBatch();
 urlshortnerbatch.add(request1);

 request2 = gapi.client.storage.buckets.update(...)
 request3 = gapi.client.storage.buckets.update(...)
 storagebatch.add(request2);  
 storagebatch.add(request3);  

官方文档

Here专门描述了如何使用Storage API进行批量请求。

【讨论】:

以上是关于在 storage api 中查找 HTTP Batch 的用法的主要内容,如果未能解决你的问题,请参考以下文章

路径/storage/emulated/0/.到底在哪儿

如何在数组jQuery中查找字符串的一部分

Google Cloud Platform:无法通过API在Storage中上传新文件版本

API 不工作/http 错误 SocketException:在发布版本中主机查找失败(在调试模式下工作)对于 Flutter

Google Storage API中的死锁

求apache POI 中文api ,或者poi的详细例子