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 日

#437HTTP 客户端

每月 25 次下载

自定义许可

18KB
375

rust-client

一个快速、有观点的命令行 HTTP 客户端。

从根本上说,rust-client 是 Rust 的出色 reqwest 库的薄包装。然而,与 curl 不同,它被设计成更多是一个调试工具。头部显示在响应体上方,命令行界面比记住标志更直观,并且默认的编码/解码行为。

性能

以下是一个完全非科学的基准测试,使用 /usr/bin/time 来精确测量 rust-clientcurl 和 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-clientcurl 表现相似,但 curl 不打印与 rust-client 相同级别的信息。

测试服务器是 hyper 文档中的示例服务器。

待办事项

[x] 使 Command 包含来自 RunConfig 的请求体 [ ] 添加 JSONForm 参数,这些参数会自动设置头部并适当序列化 [ ] 允许向请求添加任意头部 [ ] 为主要类型和函数添加文档 [ ] 标志以禁用输出中的 ansi 转义 [ ] HTML 美化打印 [ ] 以特定格式(JSON、YAML 等)编码体内容 [ ] 根据内容类型解码响应

依赖项

~23MB
~494K SLoC