17个版本

0.3.10 2021年4月18日
0.3.9 2020年11月22日
0.3.8 2020年9月6日
0.3.6 2020年8月29日
0.1.1 2020年7月31日

HTTP客户端分类中排名#380

每月下载次数:47
hreq使用

MIT/Apache

120KB
2.5K SLoC

hreq-h1

异步HTTP/1服务器和客户端实现。

该库提供了HTTP/1.1(和1.0)规范的底层部分。具体而言,它涉及通过某种未命名的传输发送/接收http请求和正文。选择使用哪个异步运行时,处理TCP和TLS都由该库外部处理。

由于HTTP/1.1没有多路复用,HTTP头Content-LengthTransfer-Encoding由该库处理/强制执行,以便能够在传输上正确地分隔请求的开始/结束位置。

范围

  • Content-Length用于已知正文大小并确保正文大小正确。
  • Transfer-Encoding: chunked当正文大小未知时。
  • Connection: keep-aliveclose处理HTTP/1.0响应分隔。

范围外

基本上是关于HTTP作为“传输”以外的所有内容,即应用层逻辑。

  • 跟随重定向
  • Cookie处理
  • Content-Type字符集,MIME类型。
  • Content-Encoding压缩,gzip。
  • 期望: 100-继续

布局和API

API试图紧密遵循h2的API,以便库的用户可以统一处理HTTP/1.1和HTTP/2.0。

有单独的客户端服务器模块,它们之间共享的代码位于crate根目录中。

握手

客户端和服务器之间必须已经建立了一些连接,该库不执行套接字连接。

在HTTP/1.1中没有像HTTP/2.0那样的“握手”,但为了与h2保持一致,开始连接的入口点是client::handshakeserver::handshake

依赖项

~1.6–2.6MB
~50K SLoC