次のことを想像してください。
$ curlsh http://www.example.org
> GET /foo/bar/bam
...output here...
> POST /thing/pool ...
... result here....
これを行うためのツールはありますか?
答え1
多くのLinux / Unixシステムでは、パスは実際には完全なURLである必要がありますが、疑似コードはすべてのシェルでのみ実行されます。
たとえば、Debianベースのシステムでは、このパッケージはlibwww-perl
lwp-requestとlwp-requestというlwp-requestへの3つのシンボリックリンクを/usr/bin/GET
インストール/usr/bin/HEAD
します/usr/bin/POST
。機能はあなたが期待するものです。 OpenSuseパッケージの最新バージョンにはシンボリックリンク(バグの可能性があります)が省略されているため、直接作成するか直接使用する必要がperl-libwww-perl
あります。lwp-request
一般的に言えば、長年にわたりUnixシステムでGET、HEAD、およびPOST実行可能ファイルを使用できるとかなり安全であると仮定できました。
もちろん、これらすべての操作にも使用できるので、curl
bashなどのコマンドラインシェルがインタラクティブではないように感じる理由を理解できない可能性があります。
答え2
答えてくれてありがとう。
Googleの終わりに見つけた残り、これはシェルスクリプトラッパーです。カールツール。これが私が望むものです。これには155行のシェルスクリプトがあり、これを実行するとGET、PUT、POST、DELETE、およびOPTIONSの機能が表示されます。この関数は私のパスで見つけたカールプログラムを囲むラッパーだけです。
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" : [ ... ]
},
}
$
最初の行は現在のシェルのコマンドのみを実行します。
「resty」コマンドの次の行は、URLのベースアドレスを設定します。その後、GET、PUT、POST...へのすべての呼び出しは暗黙的にこのベースを参照します。きれいなJSONをエクスポートする例を示します。サーバーが縮小されたJSONをエクスポートしている場合は、出力をパイプして外部スクリプトを使用して印刷できると思います。
ホストベースのデフォルト設定がサポートされます。ターゲットホストがapi.example.orgであるとします。 ~/.resty/api.example.orgという名前のファイルを生成し、その名前でホストに実行される各カール呼び出しに渡す必要があるパラメータを指定する行を挿入します。各http動詞には独自の行があります。したがって、ファイルに以下を挿入します。
GET -u myusername:mypassword --write-out "\nStatus = %{http_code}\n"
... api.example.orgがデフォルトのホスト名であるときにGET操作を実行するたびに、curlコマンドはここに示されている引数を暗黙的-u
に--write-out
使用することを意味します。 (-u は基本認証を意味します)。
別の例として、XMLが常に要求されるようにファイルにAcceptヘッダーを指定することができます。
GET --header "Accept: application/xml"
このデフォルト設定ファイルは、すべてのカールコマンドライン引数をサポートします。ホスト+動詞タプルのすべてのカールパラメータは、デフォルト設定ファイルの1行にする必要があります。
便利。
答え3
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
ディレクトリリストは、ディレクトリインデックスを送信するサイトにのみ適用されます。ただし、そうでない場合でも、get
コマンドを使用して個々のファイルをインポートできます。
答え4
はい、「--config」オプションを使用できます。
カールがstdinからファイルを読み取るようにするには、ファイル名を-K、--configを '-'で指定します。
例:
$ curl -K-
url https://github.com/blog
remote-name
<Ctrl + D>