初心者のためのcurl入門

今回はcurlについてまとめていきます。

自分は業務に入る前はあまりcurlを使ってこなかったのですが、業務に入ると結構使う機会が増えてきたのでまとめていこうと思います。

curlって何なのかというところから、よく使われるcurlコマンドまで見ていこうと思います。

そもそもcurlってなに?

curlとは、様々な通信手段を用いて、URLで示されるネットワーク上の場所とのデータの送受信を行うもので、コマンドラインから’curl’というコマンドの後に続けて、URLやオプションなどを指定することで、そのURLの場所から、データを取得したり、アップロードしたりすることができます。

様々な通信プロトコルに対応していて、HTTPSやFTP, Telnet, SMTP, IMAP, POP3などが利用できます。

基本的には、HTTPリクエストを実施して、その内容を標準出力させるという使い方をします。

curlの基本コマンド

コマンドは以下のような書式です。

$ curl オプション URL

事前準備

今回はcurlとjqはHomebrewを使ってインストールするので、Homebrewをまだインストールしてなかったら、こちらの記事(Rubyの開発環境構築(Mac))のHomebrewのインストールを参考にHomebrewインストールしてから、下のコマンドを用いてcurlとjqのインストールをしてください。

まず、curlが入っているか以下のコマンドで確認してください。

$ curl --version

バージョンが返って来ればcurlが入っています。command not foundが返ってきたら、入っていないので以下のコマンドでインストールしてください。Macだと最初から入っているはずです。

$ brew install curl

また、jsonを見やすい形で表示してくれるので、jqをインストールしておきます。

$ brew install jq 
$ jq --version

基本コマンド

#GETのAPIリクエスト
$ curl http://URL 
#'-s'で終了ステータスのみを表示
$ curl -s http://URL
#'-s'はerror情報も省略するが、'-Ss'はerror情報があれば表示。'-o'で出力先を指定。
$ curl -Ss -o 出力先PATH http://URL 
#'-v'でheader情報も表示
$ curl -v -s http://URL
#'-L'でリダイレクトがあったらリダイレクト先の情報を取る 
$ curl -L http://URL 
#'-X'でHTTPメソッドの指定(指定しなかったらGETになる)
$ curl -X PUT http://URL 
#'--data'でPOSTメソッドでデータを送ることができる
$ curl -X POST --data 'id=xx&name=example' http://URL
# '-I'でHTTPレスポンスヘッダーの取得
$ curl -I http://URL
#jqでjson表示を見やすく
$ curl https://xxx.xxx.com/api/ | jq . 

とりあえず使いそうなコマンドを並べてみましたが、まだまだあるので、随時更新しようと思います。