20 个版本
0.8.1 | 2019 年 2 月 16 日 |
---|---|
0.8.0 | 2018 年 10 月 11 日 |
0.7.4 | 2018 年 8 月 25 日 |
0.7.3 | 2018 年 2 月 26 日 |
0.0.0 | 2016 年 12 月 31 日 |
#262 in HTTP 客户端
每月 50 下载量
40KB
849 行
rural - Rust 中的用户友好命令行 HTTP 工具
为什么选择 rural?
大多数开发者在需要从命令行执行 HTTP 请求时倾向于使用 curl
。在速度和功能广度方面,curl 几乎拥有所有功能。然而,在命令行 API 方面,curl 有时可能会让人感到不足。例如,可以使用 -G
或 --get
标志来执行 GET 请求,但没有 --post
选项,而 -P
用于指示服务器连接到开放的 FTP 端口而不是直接发送响应。
命令行 HTTP 请求的一个替代方法是 HTTPie。HTTPie 拥有出色的命令行 API,包括各种参数类型和头信息的优秀语法糖。然而,由于是用 Python 编写的,HTTPie 的速度比 curl 慢得多。
rural 旨在提供与 curl 相当的速度和与 HTTPie 相似的易用性。为此,rural 故意实现了与 HTTPie 类似的 API,包括参数和头信息的语法糖。
状态
rural 目前实现了在命令行中执行 HTTP 请求所需的大部分常用功能。然而,许多不太常见的功能尚未实现。(查看 man curl
可以看出要包含的功能有多丰富)。如果您希望实现某个功能,请随时 提交问题,或者更好的是,提交一个 pull request!贡献总是非常受欢迎。
迄今为止,对 rural 没有进行任何特定的优化。从一系列极其不科学的测试中可以看出,rural 在速度方面目前与 curl 相当(这比 HTTPie 快一个数量级)。
安装
如果您还没有安装 Rust,可以从这里获取 Rust 工具链安装程序 这里。
安装Rust后,运行cargo install rural
。如果您已指示rustup不要这样做,请确保将$HOME/.cargo/bin
添加到您的PATH中。
用法
方法类型
Rural目前支持发起GET、POST、PUT、DELETE、HEAD、OPTIONS和PATCH请求。要发起请求,使用请求方法(小写)和URL调用Rural
rural get http://example.com
rural post http://example.com
rural put http://example.com
rural delete http://example.com
rural head http://example.com
rural options http://example.com
rural patch http://example.com
HTTPS
Rural需要OpenSSL来发起HTTPS请求
rural get https://example.com
输出
部分
要查看响应头而不是正文,请使用--headers
标志(简写为-d
)
rural --headers get http://example.com
rural -d get http://example.com
请注意,每当打印头时,默认情况下会打印HTTP版本号和响应状态码。要抑制此额外输出并仅获取头,请同时添加--suppress-info
标志(简写为-s
)
rural --headers --suppress-info get http://example.com
rural -ds get http://example.com
要同时打印响应头和正文,请使用--both
标志(简写为-b
)
rural --both get http://example.com
rural -b get http://example.com
--suppress-info
也适用于--both
rural --both --suppress-info get http://example.com
rural -bs get http://example.com
输出文件
要保存响应正文到文件,请使用带有所需输出文件名的--out
参数(简写为-o
)
rural get http://example.com --out output.json
rural get http://example.com -o output.html
颜色
默认情况下,Rural将着色响应头、HTTP信息字符串和响应正文中的任何JSON。要抑制此操作,请使用--no-color
标志(简写为-n
)
rural --no-color http://example.com
rural -n http://example.com
注意:用于着色JSON的库使用ANSI颜色转义序列,在Windows上可能无法正确工作。因此,Rural在Windows上禁用着色输出。
参数
Rural支持在查询字符串中提供GET参数或使用key==value
语法
rural get 'http://example.com?bass=john&drums=keith'
rural get http://example.com bass==john drums==keith
要提供正文参数,请使用key=value
语法
rural post http://example.com bass=john drums=keith
Rural默认将正文参数作为JSON发送。要将其作为表单参数发送,请使用--form
标志(简写为-f
)
rural --form post http://example.com bass=john drums=keith
rural -f post http://example.com bass=john drums=keith
正文参数也可以使用文本而不是JSON发送。为此,请使用key:=value
语法(注意,由于大多数shell如何解释一些字符,JSON值通常需要用引号括起来,如下所示)
rural post http://example.com who:='{ "bass": "john", "drums": "keith", "others": ["pete", "roger"] }'
请注意,除了POST请求外,还可以为其他类型的请求指定正文参数
rural put http://example.com bass=john
rural delete http://example.com drums=keith
头部
可以使用name:value
语法提供HTTP头(标准或自定义)
rural get http://example.com bass:john drums:keith
许可
Rural遵循MIT许可。
依赖项
~20–31MB
~527K SLoC