4 个版本
使用旧的 Rust 2015
0.2.3 | 2018 年 11 月 20 日 |
---|---|
0.2.2 | 2018 年 11 月 20 日 |
0.2.1 | 2018 年 7 月 31 日 |
0.1.0 | 2018 年 7 月 8 日 |
#437 在 HTTP 客户端
每月 25 次下载
18KB
375 行
rust-client
一个快速、有观点的命令行 HTTP 客户端。
从根本上说,rust-client
是 Rust 的出色 reqwest
库的薄包装。然而,与 curl
不同,它被设计成更多是一个调试工具。头部显示在响应体上方,命令行界面比记住标志更直观,并且默认的编码/解码行为。
性能
以下是一个完全非科学的基准测试,使用 /usr/bin/time
来精确测量 rust-client
、curl
和 Python http
的内存使用和计时;在我的非常旧的开发机上。每个应用程序都在热缓存上运行了 5 次,以下为平均值
> /usr/bin/time -l rc get localhost:8000
GET https://127.0.0.1:8000/
HTTP/1.1 200 OK
content-length: 9
date: Tue, 10 Jul 2018 14:21:55 GMT
---
It works!
0.03 real 0.01 user 0.01 sys
9494528 maximum resident set size
0 average shared memory size
0 average unshared data size
0 average unshared stack size
2376 page reclaims
0 page faults
0 swaps
0 block input operations
0 block output operations
10 messages sent
10 messages received
0 signals received
4 voluntary context switches
95 involuntary context switches
> /usr/bin/time -l curl localhost:8000
It works! 0.03 real 0.01 user 0.00 sys
5005312 maximum resident set size
0 average shared memory size
0 average unshared data size
0 average unshared stack size
1272 page reclaims
0 page faults
0 swaps
0 block input operations
0 block output operations
10 messages sent
10 messages received
0 signals received
7 voluntary context switches
47 involuntary context switches
> /usr/bin/time -l http localhost:8000
HTTP/1.1 200 OK
content-length: 9
date: Tue, 10 Jul 2018 14:24:20 GMT
It works!
0.80 real 0.45 user 0.26 sys
26623181 maximum resident set size
0 average shared memory size
0 average unshared data size
0 average unshared stack size
33318 page reclaims
0 page faults
0 swaps
0 block input operations
0 block output operations
10 messages sent
10 messages received
30 signals received
100 voluntary context switches
1012 involuntary context switches
注意,对 http
的测量是在使用多次运行 http
来预热 Python 运行时之后进行的。以下为初始结果
HTTP/1.1 200 OK
content-length: 9
date: Tue, 10 Jul 2018 14:23:53 GMT
It works!
3.75 real 0.46 user 0.36 sys
26664960 maximum resident set size
0 average shared memory size
0 average unshared data size
0 average unshared stack size
32776 page reclaims
535 page faults
0 swaps
148 block input operations
0 block output operations
14 messages sent
14 messages received
29 signals received
761 voluntary context switches
1263 involuntary context switches
尽管 rust-client
和 curl
表现相似,但 curl
不打印与 rust-client
相同级别的信息。
测试服务器是 hyper
文档中的示例服务器。
待办事项
[x] 使 Command
包含来自 RunConfig
的请求体 [ ] 添加 JSON
和 Form
参数,这些参数会自动设置头部并适当序列化 [ ] 允许向请求添加任意头部 [ ] 为主要类型和函数添加文档 [ ] 标志以禁用输出中的 ansi 转义 [ ] HTML 美化打印 [ ] 以特定格式(JSON、YAML 等)编码体内容 [ ] 根据内容类型解码响应
依赖项
~23MB
~494K SLoC