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使用
120KB
2.5K SLoC
hreq-h1
异步HTTP/1服务器和客户端实现。
该库提供了HTTP/1.1(和1.0)规范的底层部分。具体而言,它涉及通过某种未命名的传输发送/接收http请求和正文。选择使用哪个异步运行时,处理TCP和TLS都由该库外部处理。
由于HTTP/1.1没有多路复用,HTTP头Content-Length
和Transfer-Encoding
由该库处理/强制执行,以便能够在传输上正确地分隔请求的开始/结束位置。
范围
Content-Length
用于已知正文大小并确保正文大小正确。Transfer-Encoding: chunked
当正文大小未知时。Connection: keep-alive
或close
处理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::handshake
和server::handshake
。
依赖项
~1.6–2.6MB
~50K SLoC