想象一下这样的事情:
$ curlsh http://www.example.org
> GET /foo/bar/bam
...output here...
> POST /thing/pool ...
... result here....
Run Code Online (Sandbox Code Playgroud)
有什么工具可以让我这样做吗?
在许多 Linux/Unix 系统上,您的伪代码仅适用于任何 shell,尽管您的路径应该是完整的 URL。
例如,在基于Debian的系统中,包libwww-perl
装3个符号连接LWP请求这是所谓的/usr/bin/GET
,/usr/bin/HEAD
和/usr/bin/POST
。这些做你所期望的。OpenSuseperl-libwww-perl
软件包的最新版本省略了符号链接(这可能是一个错误),因此您必须自己创建它们或lwp-request
直接使用它们。通常,多年来,在 unixoid 系统上可以使用 GET、HEAD 和 POST 可执行文件一直是一个非常安全的假设。
当然你也可以curl
用于所有这些任务,所以也许我不明白为什么你觉得像 bash 这样的命令行 shell 不是交互式的。
感谢您的回答。
在谷歌搜索之后,我发现了resty,它是curl工具周围的 shell 脚本包装器。这真的是我想要的。它有 155 行 shell 脚本,当我运行它时,我得到了 GET、PUT、POST、DELETE 和 OPTIONS 的函数。这些函数只是在我的路径中找到的 curl 程序的包装器。
它在 MacOSX bash 上是这样工作的:
$ . resty
$ resty https://api.example.org
https://api.myhost.com*
$ GET /v1/o/orgname -u myusername:password
{
"createdAt" : 1347007133508,
"createdBy" : "admin",
"displayName" : "orgname",
"environments" : [ "test", "prod" ],
"lastModifiedAt" : 1347007133508,
"lastModifiedBy" : "admin",
"name" : "orgname",
"properties" : {
"propertyList" : [ ... ]
},
}
$
Run Code Online (Sandbox Code Playgroud)
那里的第一行只运行当前 shell 中的命令。
下一行,“resty”命令,设置 URL 基础。此后,对 GET、PUT、POST... 的任何调用都隐式地引用了该基。我展示了一个发出美化 JSON 的示例。我认为如果您的服务器发出缩小的 JSON,您可以通过管道输出使用外部脚本漂亮地打印它。
支持基于主机的首选项。假设您的目标主机是 api.example.org。创建一个名为 ~/.resty/api.example.org 的文件,并在其中插入指定参数的行,这些参数应通过该名称传递给每个 curl 调用主机。每个 http 动词都有自己的行。因此,在文件中插入此内容:
GET -u myusername:mypassword --write-out "\nStatus = %{http_code}\n"
Run Code Online (Sandbox Code Playgroud)
...意味着每次当 api.example.org 是基本主机名时我执行 GET 时,curl 命令将隐式使用那里显示的-u
和--write-out
args。(-u 用于基本身份验证)。
作为另一个示例,您可以在该文件中指定 Accept 标头,以便始终请求 XML:
GET --header "Accept: application/xml"
Run Code Online (Sandbox Code Playgroud)
该首选项文件支持任何 curl 命令行参数。host+verb 元组的所有 curl args 都需要在首选项文件中占一行。
便利。
ftp:
$ lftp http://repo.xplico.org/pool/
cd ok, cwd=/pool
lftp repo.xplico.org:/pool> ls
drwxr-xr-x -- /
drwxr-xr-x - 2012-02-13 09:48 main
lftp repo.xplico.org:/pool> cd main
lftp repo.xplico.org:/pool/main> ls
drwxr-xr-x -- ..
drwxr-xr-x - 2012-02-13 09:48 x
Run Code Online (Sandbox Code Playgroud)
目录列表仅适用于发送目录索引的网站。但即使他们不这样做,您仍然可以使用该get
命令来获取单个文件。
您可以使用Netcat。
netcat 是一个简单的 unix 实用程序,它可以通过网络读取和写入数据?工作连接,使用 TCP 或 UDP 协议。
这是检索 VLC 主页的示例
nc www.videolan.org 80
GET http://www.videolan.org/vlc/ HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 16 Oct 2012 07:34:48 GMT
Server: Apache/2.2.16 (Debian)
Content-Location: index.html
[…]
Run Code Online (Sandbox Code Playgroud)
其余的 HTML 输出到控制台。注意:您需要输入Return 两次后HTTP/1.0
。