curlコマンドでAPIやWebサイトへアクセスする方法【実例付き】

先生

APIテストもWebスクレイピングもおまかせ!curlコマンドをマスターして、Web開発をもっと自由に🚀

curlコマンドとは?基本を理解しよう

curlコマンドは、コマンドラインからWebサイトやAPIサーバーと通信するための強力なツールです。データの送受信、HTTPリクエストのカスタマイズなど、様々な用途に利用できます。開発者にとって必須の知識と言えるでしょう。

Web APIの動作確認や、スクリプトからのWebアクセス自動化など、幅広い場面で活躍します。

この記事では、curlコマンドの基本的な使い方から、応用的なテクニックまでを、具体的な例を交えながら解説します。

curlコマンドの基本的な使い方

最も基本的な使い方は、URLを指定してWebサイトにアクセスすることです。

curl https://www.example.com

これにより、https://www.example.comのWebサイトのHTMLソースコードがターミナルに表示されます。

-vオプションを使うと、curlコマンドの実行内容の詳細(リクエストヘッダー、レスポンスヘッダーなど)を確認できます。デバッグに役立ちます。

curl -v https://www.example.com

Webサイトからファイルをダウンロードするには、-Oオプションを使用します。これにより、URLのファイル名でローカルに保存されます。

curl -O https://www.example.com/image.jpg

ファイル名を指定して保存したい場合は、-oオプションを使用します。

curl -o myimage.jpg https://www.example.com/image.jpg

APIへのアクセス:GETリクエスト

curlコマンドは、APIへのアクセスにも非常に役立ちます。GETリクエストを送信するには、APIのエンドポイントURLを指定するだけです。

curl https://api.example.com/users

APIによっては、認証が必要な場合があります。その場合は、-uオプションでユーザー名とパスワードを指定します。

curl -u username:password https://api.example.com/users

または、-Hオプションを使って、Authorizationヘッダーを送信することもできます。

curl -H "Authorization: Bearer YOUR_API_KEY" https://api.example.com/users

APIからのレスポンスは通常JSON形式なので、jqコマンドなどと組み合わせて、必要なデータを抽出すると便利です。

curl https://api.example.com/users | jq '.[].name'

上記の例では、APIから返されたJSONデータから、nameフィールドの値のみを抽出しています。

APIへのアクセス:POSTリクエスト

POSTリクエストを送信するには、-X POSTオプションを使用します。また、-dオプションで送信するデータを指定します。

curl -X POST -H "Content-Type: application/json" -d '{"name": "John Doe", "email": "john.doe@example.com"}' https://api.example.com/users

上記の例では、JSON形式のデータを送信しています。-HオプションでContent-Typeヘッダーを指定することで、サーバーにデータの形式を伝えます。

データをファイルから読み込むことも可能です。@記号を使ってファイル名を指定します。

curl -X POST -H "Content-Type: application/json" -d @data.json https://api.example.com/users

curlの応用:その他のオプション

curlコマンドには、他にも様々なオプションがあります。

-AオプションでUser-Agentヘッダーを指定できます。これにより、Webサイトに対して、特定のブラウザやクローラーを装うことができます。

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" https://www.example.com

--cookieオプションでCookieを送信できます。ログインが必要なWebサイトにアクセスする場合などに使用します。

curl --cookie "sessionid=YOUR_SESSION_ID" https://www.example.com/profile

--proxyオプションでプロキシサーバーを指定できます。

curl --proxy http://proxy.example.com:8080 https://www.example.com

参考リンク

まとめ

curlコマンドは、Web開発において非常に強力なツールです。この記事では、基本的な使い方から、APIへのアクセス、応用的なオプションまでを解説しました。curlコマンドを使いこなして、Web開発を効率化しましょう。