1个不稳定版本
0.1.6 | 2024年1月20日 |
---|
#316 在 HTTP客户端
195KB
3.5K SLoC
nightfly
此项目是致力于将reqwest库迁移到lunatic运行时的持续工作
工作情况
- 请求和响应体中的json、文本和字节
- brotli、gzip和deflate解压缩
- 重定向处理
- cookies
- 分块响应
- 客户端多个打开的TCP流处理
- 超时(需要更多的测试)
- 响应管道(需要chunk编码)
- 连接池(需要更多使用lib以找到良好的方法)
- 代理处理
- 升级、socks5支持和websockets
- 自定义DNS解析器
为lunatic运行时编写的一个易于使用的Rust HTTP客户端。
- 普通正文、JSON、urlencoded、多部分(见示例)
- 不同策略的重定向
- 通过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(())
}
要求
- 运行lunatic VM的版本。
许可证
以下任一许可证下许可:
- Apache许可证2.0版本(LICENSE-APACHE 或 http://apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
贡献
除非你明确声明,否则任何根据Apache-2.0许可证定义提交的旨在包含在作品中的贡献,都应按上述方式双许可,不得有任何附加条款或条件。
依赖关系
~19MB
~569K SLoC