某些GCP API方法需要一个空的请求主体,其他需要{}。我无法弄清楚任何模式。
需要空请求主体的方法示例,如果使用{}调用则返回错误:
在正文中需要{}的方法示例,如果使用空主体调用则返回错误:
https://cloud.google.com/resource-manager/reference/rest/v1beta1/projects/getIamPolicy
https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics/create
令人困惑的是,所有这四个文档都说请求体必须为空!对于第二组,我说这是一个错误:正文必须非空;它必须是{}。
这非常令人讨厌 - 感觉就像随机差异在各种方法中pe?这里有押韵或理由吗?身体{}方法无法接受一个空体?
有些想法似乎无法解释其中的差异:
由于许多产品使用IAM,因此这些功能可能具有奇怪的行为。但请参见上文 - 产品之间的getIamPolicy
不同。
不同的产品团队可以决定不同的地方惯例。但请参见上文 - pubsub API在每个阵营都有调用。
答案 0 :(得分:1)
您共享的前两个链接是HTTP GET
方法,它们不应该有正文,因为它应该只检索数据,并且所有信息都可以通过URL和一些查询参数传递。
其他两个链接是HTTP PUT
方法,它们希望有效负载更新给定实体的当前内容。
您可以在IETF RFC 2616中找到有关如何定义HTTP方法的更多说明,解释HTTP协议。