#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 · Rust 包仓库 57/week @ 2024-05-01 · Rust 包仓库 65/week @ 2024-05-08 · Rust 包仓库 87/week @ 2024-05-15 · Rust 包仓库 170/week @ 2024-05-22 · Rust 包仓库 70/week @ 2024-05-29 · Rust 包仓库 74/week @ 2024-06-05 · Rust 包仓库 58/week @ 2024-06-12 · Rust 包仓库 172/week @ 2024-06-19 · Rust 包仓库 44/week @ 2024-06-26 · Rust 包仓库 80/week @ 2024-07-03 · Rust 包仓库 54/week @ 2024-07-10 · Rust 包仓库 101/week @ 2024-07-17 · Rust 包仓库 110/week @ 2024-07-24 · Rust 包仓库 76/week @ 2024-07-31 · Rust 包仓库 343/week @ 2024-08-07 · Rust 包仓库 154/week @ 2024-08-14 · Rust 包仓库

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://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