#http #http-request #buffer #reader #replace

http-range-client

具有针对顺序请求优化的缓冲区的 HTTP Range 请求的 HTTP 客户端

5 个不稳定版本

0.8.0 2024 年 8 月 12 日
0.7.2 2023 年 9 月 10 日
0.7.1 2023 年 9 月 2 日
0.7.0 2023 年 8 月 31 日
0.6.0 2021 年 11 月 10 日

#82HTTP 客户端

Download history 57/week @ 2024-05-01 65/week @ 2024-05-08 87/week @ 2024-05-15 170/week @ 2024-05-22 70/week @ 2024-05-29 74/week @ 2024-06-05 58/week @ 2024-06-12 172/week @ 2024-06-19 44/week @ 2024-06-26 80/week @ 2024-07-03 54/week @ 2024-07-10 101/week @ 2024-07-17 110/week @ 2024-07-24 76/week @ 2024-07-31 343/week @ 2024-08-07 154/week @ 2024-08-14

693 每月下载次数
4 crates 中使用

MIT/Apache

35KB
647

http-range-client

CI build crates.io version docs.rs docs

具有针对顺序读取优化的缓冲区的 HTTP Range 请求的 HTTP 客户端。

实现了 Seek+Read 以支持阻塞客户端,使其成为本地文件的直接替代品。

使用示例

use http_range_client::*;

let mut client = BufferedHttpRangeClient::new("https://flatgeobuf.org/test/data/countries.fgb");
let bytes = client.min_req_size(256).get_range(0, 3).await?;
assert_eq!(bytes, b"fgb");
let version = client.get_bytes(1).await?; // From buffer - no HTTP request!
assert_eq!(version, [3]);

let mut reader = HttpReader::new("https://www.rust-lang.net.cn/static/images/favicon-32x32.png");
reader.seek(SeekFrom::Start(1)).ok();
let mut bytes = [0; 3];
reader.read_exact(&mut bytes)?;
assert_eq!(&bytes, b"PNG");

支持的 HTTP 客户端(功能标志)

  • reqwest 异步 (reqwest-async,默认)
  • reqwest 阻塞 (reqwest-sync,默认):在 Wasm 目标上不受支持
  • ureq 阻塞 (ureq-sync):在 Wasm 目标上不受支持

其他客户端可以通过 AsyncBufferedHttpRangeClientSyncBufferedHttpRangeClient 适配器使用,在实现 AsyncHttpRangeClientSyncHttpRangeClient 特性后。

依赖项

~0.5–14MB
~180K SLoC