繁体   English   中英

http2.0 将使用什么请求正文编码?

[英]What request body encoding will be used for http2.0?

作为标题,人们将使用什么样的格式来编码 http2.0 的正文消息? 我了解 http2.0 通过二进制编码消息 header 大大提高了效率。 application/json 等消息体呢? 它也会变成二进制,例如真或假值只需要一位吗? 数字 200 只占用一个字节而不是三个 ASCII 字符?

我真的不知道为什么我们首先将 JSON 设计为文本格式? 二进制格式存储数字和boolean不是更有效吗? 如果我们使用文本格式,为什么我们仍然说 json 有多种数据类型:数字、字符串、布尔值、数组? 这些数据类型有什么意义,因为它们都是字符串和 ascii 编码的。

- - - - - - - - - - - - - - - - - - 更新 - - - - - - - ------------

在我成功弄清楚如何创建http2服务器以及如何使用wireshark解密消息之后。 我意识到 json 仍然使用 ascii 而非二进制进行编码: How to use wireshark to view encrypted application data between curl client and http2 server using PKCS12 key/cert 在此处输入图像描述 即使使用 http2,200 仍然是三个字节

HTTP/2 协议对于应用程序数据是不透明的,这意味着无论应用程序决定发送什么格式,HTTP/2 都会发送。

对于 JSON,如果应用程序将 JSON 字符串转换为 UTF-8 字节,这些是将要发送的字节,HTTP/2 不会做任何进一步的编码。 在您的示例中,在这种情况下, true将占用 4 个字节、 200 3 个字节等。

如果您的应用程序压缩 JSON 字节并发送压缩字节,HTTP/2 将发送压缩字节。

关于为什么 JSON 设计是文本而不是二进制的问题是一个更大的问题,它可以追溯到历史原因、简单性和人类可读性,但主要是因为 JSON 字符串可以反馈给 Z686155AF75A60ED0F3E9 解释器以返回一个解释器JavaScript object。

现在有类似 JSON 的二进制格式(例如CBOR ,还有许多其他格式),它们在任何语言中都有很好的支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM