#stream #http-response #http #web #http-request #streaming-json #axus

reqwest-streams

为reqwest提供HTTP体流支持:JSON/CSV/Protobuf等

14个版本 (6个重大更新)

0.7.0 2024年7月12日
0.5.1 2023年12月8日
0.4.0 2023年11月9日
0.3.0 2023年5月22日
0.2.0 2022年7月31日

#690 in 网络编程

Download history 231/week @ 2024-04-29 319/week @ 2024-05-06 528/week @ 2024-05-13 415/week @ 2024-05-20 497/week @ 2024-05-27 660/week @ 2024-06-03 420/week @ 2024-06-10 576/week @ 2024-06-17 474/week @ 2024-06-24 246/week @ 2024-07-01 371/week @ 2024-07-08 440/week @ 2024-07-15 530/week @ 2024-07-22 281/week @ 2024-07-29 311/week @ 2024-08-05 417/week @ 2024-08-12

每月下载量:1,546
用于 3 crates

Apache-2.0

45KB
976

Cargo tests and formatting security audit

Rust的reqwest流

库为reqwest提供HTTP响应流支持

  • JSON数组流格式
  • JSON行流格式
  • CSV流
  • Protobuf长度前缀流格式
  • Arrow IPC流格式

当您从某些来源(如数据库、文件等)读取大量对象流时,此类响应非常有用,并且希望避免大量内存分配。

快速入门

Cargo.toml

[dependencies]
reqwest-streams = { version = "0.7", features=["json", "csv", "protobuf", "arrow"] }

示例代码


use reqwest_streams::*;
use futures::stream::BoxStream;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Deserialize)]
struct MyTestStructure {
    some_test_field: String
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {

    let _stream = reqwest::get("http://localhost:8080/json-array")
        .await?
        .json_array_stream::<MyTestStructure>(1024);

    Ok(())
}

所有示例均可在示例目录中找到。

要运行示例,请使用

# cargo run --example json-stream

需要服务器支持吗?

有相同的功能

许可证

Apache软件许可证(ASL)

作者

Abdulla Abdurakhmanov

依赖

~6–19MB
~276K SLoC