
カールを使用してPOSTまたはファイルをURLにPUTする場合は、ファイルの内容を読み込む2つの方法があります。
-T ${file_path}
--data-binary @${file_path}
または-d $@{file_path}
(ASCIIデータファイルの場合)
これら2つのオプションの違いは何ですか?
答え1
これらのオプションの違いを理解するには、以下をお読みください。マニュアルページまたは、いくつかの実験をしてみてください。
マニュアルページ
-d、--データ
指定したデータを次に送信します。郵便はがきユーザーがHTMLフォームを作成し、送信ボタンを押すとブラウザが要求するのと同様に、HTTPサーバーに要求します。これにより、カールは次を使用してデータをサーバーに渡します。コンテンツタイプアプリケーション/x-www-form-urlencoded。 [...]
-T, --ファイルのアップロード
これにより、指定されたローカルファイルがリモートURLに送信されます。 [...] HTTP(S) サーバーで使用される場合置くコマンドが使用されます。 [...]
いくつかの実験をしてください
リスニングモードでnetcat(macOSバージョン)を実行します。
nc -l localhost 8989
テストファイルの生成:
echo test>test
カールコマンドを実行し、リスニング側で結果を確認します。
% curl -d "name=test" localhost:8989
POST / HTTP/1.1
Host: localhost:8989
User-Agent: curl/7.84.0
Accept: */*
Content-Length: 9
Content-Type: application/x-www-form-urlencoded
name=test
% curl -T test localhost:8989
PUT /test HTTP/1.1
Host: localhost:8989
User-Agent: curl/7.84.0
Accept: */*
Content-Length: 5
Expect: 100-continue
test
あなたの質問に答えるために、この-d
オプションはx-www-form-urlencoded形式のデータを送信してPOST要求を作成し、-T
データ形式を指定せずにPUT要求を送信します。