我试图弄清楚如何使用rest API将文件上传到Google云存储,我不想使用客户端库。
我阅读了这些文件,但这对于这个飞行的初学者来说没什么用,
任何人都可以一步一步地告诉我如何做到这一点?以及URL /标题/正文格式应该如何,如果还能给我一个非常有帮助的例子。
答案 0 :(得分:0)
如果您不打算使用任何帮助程序库并且也是初学者,那么实现上传到GCS的最难的部分可能就是自己进行身份验证。我们暂时忽略它。
将对象上传到Google云端存储的最简单方法是对storage.googleapis.com进行HTTPS调用,如下所示:
PUT /your-bucket-name/your-object.txt HTTP/1.1
Authorization: (YOUR ACCESS TOKEN GOES HERE)
Content-Length: 20
Content-Type: text/plain-or-whatever; charset=utf-8
Host: storage.googleapis.com
User-Agent: YourApplication/1.0
This is a test file
那将上传名为" your-object.txt"的文件。类型" text / plain-or-whatever"使用内容"到#桶;你的桶名";这是一个测试文件。"
如果你的存储桶允许匿名用户上传文件(你不应该这样做),那么就不要包含授权行,你就完成了。
现在,由于您真的不想使用任何客户端库,并且可能包含Google的OAuth库,您需要自己实施授权,所以让我给您概述。
首先,如果您想立即尝试,请安装" gcloud"工具,使用" gcloud auth login"登录,然后使用gcloud auth print-access-token
打印访问令牌。然后使用授权标头Authorization: Bearer whatever.gcloudprintedout
。这样您就可以快速启动并运行GCS。但令牌只会持续一个小时左右,因此您需要实施OAuth。
Google Cloud API使用OAuth来处理他们的请求,这是一种功能强大但不简单的身份验证机制。有关OAuth如何运作的大量文档:https://developers.google.com/identity/protocols/OAuth2
还有关于授权Google云端请求的更一般信息:https://cloud.google.com/docs/authentication
如果您使用App Engine或GCE等Google云技术运行应用程序,auth会更容易一些,但我会假设您在自己的计算机上运行此程序。我将进一步假设您希望您的应用程序具有自己的标识,而不是简单地让您作为上载流程的一部分登录。对于这种情况,您需要一个服务帐户,该帐户将具有关联的私钥。
服务帐户的基本流程是您将为访问凭据创建JWT请求,然后使用您的私钥对该请求进行加密签名,然后将该签名请求发送给Google。它会返回一个令牌,然后可以将其传递给您的实际上传请求。您可以继续使用该令牌,直到它到期为止,此时您需要构建另一个JWT请求以请求另一个令牌。
同样,客户端库完全为您完成整个过程。我正在描述独自实现所有内容的方法。
答案 1 :(得分:0)