为了账号安全,请及时绑定邮箱和手机立即绑定

在本地 devappserver 上使用 google-api-go-client

在本地 devappserver 上使用 google-api-go-client

Go
绝地无双 2021-08-23 17:17:19
我正在编写一个将在 GCE 上运行的应用程序,并使用https://code.google.com/p/google-api-go-client/ 中的 google-api-go-client /在 GCS 中存储数据。我还有一个 GAE 应用程序正在运行,GCE 应用程序与之通信。我可以在本地运行我的 GCE 应用程序并与实时 GCS 服务器通信并存储文件并检索它们。现在我正在尝试将文件本地存储在 GCS 中,以便我可以运行测试环境。我看到 devappserver 支持通过 blobstore 模拟 GCS。但是,我似乎无法弄清楚如何将我的 GCE 应用程序指向本地 devappserver 以进行 GCS 存储。我正在使用我的 GAE 应用程序通过“goapp serve”运行 devappserver。我曾尝试设置基本路径,结果导致 devappserver 出现 500 个错误。service, err := storage.New(httpClient)service.BasePath = "http://localhost:8080/_ah/gcs/"结果ERROR    2014-10-23 19:14:08,692 module.py:727] Request to '/_ah/gcs/b/default/o/6051711999279104' failedTraceback (most recent call last):  File "/home/ben/go_appengine/google/appengine/tools/devappserver2/module.py", line 723, in _handle_request    return handler.handle(match, environ, wrapped_start_response)  File "/home/ben/go_appengine/google/appengine/tools/devappserver2/wsgi_handler.py", line 59, in handle    return self._wsgi_app(environ, start_response)  File "/home/ben/go_appengine/google/appengine/tools/devappserver2/gcs_server.py", line 56, in __call__    status_message = httplib.responses.get(e.args[1], '')IndexError: tuple index out of rangeINFO     2014-10-23 19:14:08,693 module.py:652] default: "GET /_ah/gcs/b/default/o/6051711999279104?alt=json HTTP/1.1" 500 -我可以将浏览器指向此 URLhttp://localhost:8080/_ah/gcs/bucket并得到一个 XML 结果:<ListBucketResult xmlns="http://doc.s3.amazonaws.com/2006-03-01">    <IsTruncated>False</IsTruncated></ListBucketResult>我看过几篇关于在本地使用 GCS 的帖子,但我似乎无法让它正常工作。我在这里做错了吗?还是 devappserver 不支持 GCS 或者它只是它不支持的 json api?
查看完整描述

1 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

我想确保我们清楚“Google APIs Client Library for Go”之间的区别,它是 Go 的通用 Google API 客户端,可用于访问 Google Cloud Storage JSON API,与 App Engine 的“Google Cloud Storage Go Client”,这是一个特定于想要使用 Google Cloud Storage 的 App Engine 用户的客户端库。

有两个 Google Cloud Storage API:JSON 和 XML。通用 Google API 客户端库与 JSON API 兼容。App Engine Google Cloud Storage Go Client 使用 XML API。

App Engine 客户端库完全支持本地操作。这是通过提供客户端库使用的 Google Cloud Storage XML API 的本地实现来实现的。不幸的是,只有 XML API 存在于本地,因此只有 App Engine 客户端库在本地工作。将另一个客户端指向它会失败,因为 XML API 不理解传入的 JSON API 请求。

您的两个最佳选择是执行以下操作之一:

  1. 使用适用于 App Engine的Google Cloud Storage Go 客户端库。下载说明在这里

  2. 不要使用本地实现,而是使用带有测试存储桶的真实 Google Cloud Storage。


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 263 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信