属性 名称的哪种大小写被认为是 Google 云 Pub/Sub 推送消息中的 "most correct"?
Which casing of property names is considered the "most correct" in a Google Cloud Pub/Sub Push Message?
如果您使用 a "Push" subscription to a Google Cloud Pub/Sub,您将注册一个从 Google 的托管服务接收消息的 HTTPS 端点。如果您希望避免依赖 Google Cloud 的 SDK,而是通过传统的 Web 请求触发您的异步服务,这非常有用。但是,有效载荷属性的预期大小写并不清楚,而且由于我使用的是推送订阅,所以我没有可用于反序列化的 SDK。
如果您查看 this documentation, you see references to message_id
using snake_case (Update 9/18/18: As stated in ,文档已更新,因为这是不正确的),例如:
{
"message": {
"attributes": {
"key": "value"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"message_id": "136969346945",
"publish_time": "2014-10-02T15:01:23.045123456Z"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
如果您查看 this documentation, you see references to messageId
using camelCase,例如:
{
"message": {
"attributes": {
"key": "value"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"messageId": "136969346945",
"publishTime": "2014-10-02T15:01:23.045123456Z"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
如果您订阅主题并记录输出,您实际上会得到 两种 格式,例如:
{
"message": {
"attributes": {
"key": "value"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"messageId": "136969346945",
"message_id": "136969346945",
"publishTime": "2014-10-02T15:01:23.045123456Z",
"publish_time": "2014-10-02T15:01:23.045123456Z"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
理想的回答会回答这两个问题:
- 为什么会有两种格式?
- 更正确还是更权威?
基于Google JSON style guide,正式正确的变量名称应该是驼峰命名法(messageId
)。在 Cloud Pub/Sub 的早期阶段,蛇形大小写用于 message_id
和 publish_time
,但后来为了符合样式标准而进行了更改。除了 camel case 之外,还保留了 snake case 的,以确保依赖于原始格式的推送端点不会中断。您指出的第一个文档 link 显然当时没有更新,很快就会修复。
如果您使用 a "Push" subscription to a Google Cloud Pub/Sub,您将注册一个从 Google 的托管服务接收消息的 HTTPS 端点。如果您希望避免依赖 Google Cloud 的 SDK,而是通过传统的 Web 请求触发您的异步服务,这非常有用。但是,有效载荷属性的预期大小写并不清楚,而且由于我使用的是推送订阅,所以我没有可用于反序列化的 SDK。
如果您查看 this documentation, you see references to (Update 9/18/18: As stated in message_id
using snake_case
{
"message": {
"attributes": {
"key": "value"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"message_id": "136969346945",
"publish_time": "2014-10-02T15:01:23.045123456Z"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
如果您查看 this documentation, you see references to messageId
using camelCase,例如:
{
"message": {
"attributes": {
"key": "value"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"messageId": "136969346945",
"publishTime": "2014-10-02T15:01:23.045123456Z"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
如果您订阅主题并记录输出,您实际上会得到 两种 格式,例如:
{
"message": {
"attributes": {
"key": "value"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"messageId": "136969346945",
"message_id": "136969346945",
"publishTime": "2014-10-02T15:01:23.045123456Z",
"publish_time": "2014-10-02T15:01:23.045123456Z"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
理想的回答会回答这两个问题:
- 为什么会有两种格式?
- 更正确还是更权威?
基于Google JSON style guide,正式正确的变量名称应该是驼峰命名法(messageId
)。在 Cloud Pub/Sub 的早期阶段,蛇形大小写用于 message_id
和 publish_time
,但后来为了符合样式标准而进行了更改。除了 camel case 之外,还保留了 snake case 的,以确保依赖于原始格式的推送端点不会中断。您指出的第一个文档 link 显然当时没有更新,很快就会修复。