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日

#293HTTP客户端

Download history 159/week @ 2024-03-31 1/week @ 2024-04-07 223/week @ 2024-06-30

每月223次下载
3 个Crate中使用了(2个直接使用)

Apache-2.0

140KB
2.5K SLoC

雪风(Yukikaze)

Build Crates.io Documentation dependency status

Yukikaze image

美观且优雅的雪风是一个基于 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