在 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 的用法的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud Platform:无法通过API在Storage中上传新文件版本
API 不工作/http 错误 SocketException:在发布版本中主机查找失败(在调试模式下工作)对于 Flutter