【问题标题】:What is the correct Protobuf content type?什么是正确的 Protobuf 内容类型?
【发布时间】:2015-08-10 21:26:29
【问题描述】:

JSON 有 application/json 作为标准。对于 protobuf,有些人使用 application/x-protobuf,但我看到有人提出了像 application/vnd.google.protobuf 这样奇怪的东西。我们是否有 RFC 或其他标准可供我用作参考?

【问题讨论】:

  • groups.google.com/forum/#!topic/protobuf/VAoJ-HtgpAI 可能是 vnd 的来源;不,我不知道自那次讨论以来有任何变化,不:我不知道任何标准
  • 看来 protorpc 切换到 application/octet-stream: github.com/google/protorpc/commit/…
  • 那里一个 IEFT 草案 tools.ietf.org/html/draft-rfernando-protocol-buffers-00 建议 application/protobuf,但是:这只是一个草案,看起来它没有去任何地方,现在已经过期
  • 在大多数情况下,知道某些数据是 protobuf 并不是特别有用;如果你想知道类型,你想知道它是什么 protobuf 类型。所以说真的,protobuf 的每个用户都需要自己的内容类型。
  • @KentonVarda 知道数据是 protobuf 是有用的,即使没有识别消息的性质。例如,在 XML 或 JSON 之间的内容协商中考虑内容类型的值——即使如果您无法解释它们的内容,它们都是无用的。它对于两个以上的选择同样有用,例如XML 或 protobuf 或 JSON 或 LISP(或者是 LISPON?)。 :-)

标签: mime-types protocol-buffers content-type


【解决方案1】:

有一个expired IETF proposal 表示application/protobuf。它没有解决接收方如何确定特定消息类型的问题。以前的讨论建议使用参数来指定包和消息,例如application/protobuf; proto=org.some.Message

实际上,您列出的类型似乎确实是正在使用的类型,例如监控系统Prometheus uses application/vnd.google.protobufCharles web debugging proxy recognizes application/x-protobuf; messageType="x.y.Z"

【讨论】:

【解决方案2】:

如果我们假设“protobuf 内容类型”是指 protos 的标准线路格式,那么其他答案可能会过于迂腐。

内容类型应该映射到编码方案,并且protos有多种编码方案。有线格式是最常见和最重要的一种,但也有text format,可能还有其他格式。话虽如此,我无法找到任何标准的原始文本格式的内容类型,所以我不知道这里有什么其他选项可以添加。

Protos 只是描述模式的一种方式,并没有与该模式中的任何特定数据编码方式紧密耦合。

【讨论】:

    猜你喜欢
    • 2010-10-03
    • 2013-03-15
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 2013-12-11
    相关资源
    最近更新 更多