はじめに
curlコマンドで「どうやってコマンドを書けばPOSTできるんだろう」となり色々調べてPostできたのでまとめておく。
curlコマンドのオプションを知ることで、curlをより使いこなせるようになると思うので、便利そうだと思ったオプションについてもいくつか書いておく。
curlコマンドとは
まず初めにcurlコマンドは、データを転送するためのコマンドで、FTPやHTTP、Telnet,SMTP,HTTPSなどのさまざまな通信プロトコルに対応している。
apiに触る機会があると手軽にレスポンスを確認できるので重宝しているコマンド。
実際に書いたコマンド
$ curl -L -X POST 'https://api~' \-H 'Authorization: Bearer hogehoge' \-H 'Content-Type: application/json' \--data-raw '{"product": {"name": "string", "sales_price": 1600}' | jq
様々なオプションがついているが、どれもPOSTするのに必要なものなので一つ一つの意味を整理していく。
-X(--request)
HTTPメソッドの指定をするオプション。--request
でも同じ意味を持つ。
-L(--location)
curlは、デフォルトではリダイレクトを追跡しないので、リダイレクトも追跡できるようにするオプション。
-H(-header)
HTTPヘッダーの指定ができるオプション。
リクエスト時に認証が必要だったので、Authorizationを指定して必要な値を付与した。
--data-raw
POSTリクエストでデータを指定することができる.
リクエスト時にはContent-Typeはデフォルトでapplication / x-www-form-urlencoded
が指定される。
同じようなオプションで--data
がある。dataだとファイルをデータとして扱いたい場合は@<file>
という形で指定できるが、--data-raw
だと@<file>
を使うことはできない。
他に便利そうなオプション
-o(-output ファイル名)
ファイル名を指定してダウンロードしたい時に使う。
もし対象のディレクトリがない場合は
--create-dirs
のコマンドをつけてあげると、ディレクトリの作成まで行ってくれる。
ディレクトリの作成は毎回行なっていたので、このコマンドを早く知れていれば...という気持ち
-O(--remote-name)
指定した URL の内容をそのままファイルとしてダウンロードすることができる。
-s(-silent)
実行中のメッセージを表示しないようにする。
-sS(--show-error)
実行中のメッセージは表示されないがエラーは表示するようにする。
-f(--fail)
実行中に失敗してもエラーメッセージが表示されないようになる。
-4(--ipv4)
IPv4しか指定できない
-6(--ipv6)
IPv4しか指定できない
参考文献