48个版本 (11个稳定版本)
1.0.10 | 2020年7月23日 |
---|---|
1.0.5 | 2020年5月15日 |
1.0.4 | 2020年3月21日 |
1.0.3 | 2019年12月31日 |
0.3.1 | 2018年11月23日 |
#293 在 HTTP客户端
每月223次下载
在 3 个Crate中使用了(2个直接使用)
140KB
2.5K SLoC
雪风(Yukikaze)
美观且优雅的雪风是一个基于 hyper 的轻量级HTTP客户端库。
特性
- 使用rustls进行TLS
- 支持多种类型的主体:纯文本、JSON、多部分和表单
- 简单的重定向策略,可选择限制重定向次数。
- 支持除UTF-8之外的文本编码。
- 提供各种辅助工具来提取有用的头信息:Cookies、ETag/Last-Modified、与内容相关的头信息。
- 支持响应体的文件重定向。
- 通知接口以指示下载进度。
可用的cargo特性
rustls
- 启用使用rustls
进行默认SSL实现。默认开启。compu
- 启用压缩支持。默认开启。encoding
- 启用encoding
crate 支持。默认关闭。websocket
- 启用WebSocket升级机制。默认关闭。当开启时,启用carry_extensions
。carry_extensions
- 从请求携带http::Extensions
到解析后的Response
。默认关闭。
示例
- fie - 用于各种社交媒体的CLI垃圾邮件工具。
问答
问:为什么不直接使用 reqwest/actix-web/mio_httpc?
答:Reqwest API很糟糕,actix-web客户端带有大量服务器代码,而 mio_httpc对我来说是个未知的怪物(我是在创建Yukikaze时才知道它的)。
问:我看到一些月亮文字和动漫图片。你是这些令人厌恶的二次元吗?
答:显然是的 ;)
问:为什么有这么多内联?你这么愚蠢,是不是过早优化了!?
A: 是的,我太愚蠢了,因为编译器默认不允许跨crate内联方法(除非你打开LTO)
Q: 为什么构建方法会panic?为什么不在构建器中存储错误,并在创建请求完成后返回它?
A: 我认为在正常情况下,你不应该创建无效的请求,因此我将此类错误视为非常异常
依赖项
~14–20MB
~420K SLoC