#http-request #request-response #request #higher-level #dns-resolver #http

nightfly

针对 lunatic 运行时的更高级 HTTP 客户端库

7个版本

0.1.6 2023年5月9日
0.1.5 2023年4月17日
0.1.4 2022年11月17日

#203HTTP客户端


用于 lucidity

MIT/Apache

195KB
3.5K SLoC

nightfly

此项目是持续努力将 reqwest 库移植到 lunatic 运行时的成果

功能

  • 请求和响应体的 json、文本和字节
  • 使用 brotli、gzip 和 deflate 进行解压缩
  • 处理重定向
  • cookie
  • 分块响应
  • 处理每个客户端的多个打开 TCP 流
  • 超时(需要更多测试)
  • 响应管道(需要分块编码)
  • 连接池(需要更多使用以找到良好的方法)
  • 处理代理
  • 升级、socks5 支持和 WebSocket
  • 自定义 DNS 解析器

MIT/Apache-2 licensed CI

为 lunatic 运行时编写的 Rust 的易用、功能齐全的 HTTP 客户端。

  • 普通体、JSON、表单编码、多部分(请参阅示例)
  • 具有不同策略的重定向
  • 通过 lunatic-native TLS 进行 HTTPS(请参阅示例)
  • Cookie 存储
  • 可自定义基于函数的重定向策略(进行中)
  • HTTP 代理(进行中)

示例

此示例使用 Lunatic 并启用了某些可选功能,因此您的 Cargo.toml 可能如下所示

[dependencies]
nightfly = { "0.1.0" }
lunatic = { "0.12.0" }

然后是代码

use std::collections::HashMap;

#[lunatic::main]
fn main() {
    let resp = nightfly::get("https://httpbin.org/ip")
        .unwrap()
        .json::<HashMap<String, String>>()
        .unwrap();
    println!("{:#?}", resp);
    Ok(())
}

需求

许可证

根据以下之一授权

贡献

除非您明确声明,否则您有意提交的任何贡献,根据 Apache-2.0 许可证定义,均应如上双许可,而无需任何附加条款或条件。

依赖项

~18MB
~547K SLoC