curlコマンドについて

目次

curl(主にコマンド)について記事を書こうと思います。
読み方については「シーユーアールエル」と「カール」があるのですが
「カール」が正しいようです。

curl自体の説明は色んな方がされているので
使用頻度が高いであろうコマンドをメインに、備忘録も兼ねてまとめてみました。

curlとは

様々な通信プロトコルをサポートし、リクエストを送信することが可能です。

有名どころでいうとこんな感じ
FTP, HTTP, HTTPS, IMAP, LDAP, POP3, SCP, SFTP, SMB, SMTP, Telnet

公式HP:https://curl.se

メールの送受信できるのは知らなったです!
ただ現状、使うことは無さそうなので、ここまでに。

使い方

基本的なコマンドはこちらになります。
curl [option(long option)※複数可] [対象URL]

例)
curl -v https://example.com
curl --verbose GET https://example.com

主なオプション一覧

option long option 機能
-o --output 指定ファイルに標準出力内容を保存
-v --verbose リクエスト、レスポンスのヘッダ情報表示
-A --user-agent ユーザーエージェントを設定
-u --user ベーシック認証情報を設定
-H --header リクエストヘッダに情報を追加/更新
-X --request リクエストメソッドを設定
※デフォルト(未指定の場合)はGETになる
-d --data POSTリクエストのパラメータを設定
※リクエストも自動的にPOSTになるので-Xの指定は不要
-F --form データ形式がmultipart/form-dataに
ファイルアップロードで使用する
-b --cookie サーバーにクッキーを送信
-c --cookiejar サーバーから受信したクッキーを保存

公式マニュアル:https://curl.se/docs/manpage.html

-o(--output)<file_name>
標準出力された内容をファイルに保存

実行:$ curl -o hoge http://example.com

-v(--verbose)
リクエスト、レスポンス、のヘッダ情報表示

実行:$ curl -v 'Mozilla/5.0' http://example.com

リクエストヘッダは > で表示
レスポンスヘッダは < で表示

-A(--user-agent)<ua>
ユーザーエージェントを指定

実行:$ curl -v -A 'Mozilla/5.0' http://example.com

-u(--user)<user>:<password>
ベーシック認証情報を設定

実行:$ curl -u admin:password1234 http://example.com

ベーシック認証が掛かってるステージング環境など、API確認で有効です。

-H(--header)
リクエストヘッダに情報を追加/更新

実行:$ curl -v -H "Content-Type: application/json" http://example.com

json形式など、指定フォーマットで送信時に使用

-X(--request)
リクエストメソッドを設定

実行:$ curl -v -X POST http://example.com

-d(--data)
リクエストのパラメータを設定

実行:$ curl -H "content-type: application/json" -X POST -d '{"hoge1":"test1"}' http://example.com

json形式で以下データをPOST

ファイルを指定することも可能
※ファイル名の前に@を設定
実行:$ curl -H "content-type: application/json" -X POST -d @hoge.json http://example.com

-f(--form)<file>
データ形式がmultipart/form-dataにしてファイル送信

実行:$ curl -v -X POST -f @hoge.png http://example.com

先ほど説明した通りファイル指定(@ファイル名)が可能になるので
画像ファイルをPOST形式でリクエストができます。
※画像登録などのAPIの確認で使えますね!

multipart/form-data及びboundaryの分かりやすく説明されているサイト
https://www.yoheim.net/blog.php?q=20171201

-b(--cookie)<cookie file>
サーバーにクッキーを送信

実行:$ curl -v -b cokkie http://example.com

-c(--cookiejar)<cookie file>
サーバーから受信したクッキーを保存

実行:$ curl -v -c cokkie http://example.com

便利な使い方

  • サーバのIPアドレスを調べたい場合

curl ifconfig.me
IPアドレス(xxx.xxx.xxx.xx)が返却される

参考にさせていただいた記事
https://qiita.com/ShibuyaBizman/items/f26a956de04e93aef111

  • サーバにクッキーを送信、受信したクッキーを再び保存

$ curl -b cookie -c cookie http://www.example.com

※随時追加予定(予定)

GUIがお好みの方

curlはCUIですが、視覚的に見やすいGUIで便利なツール
「postman」を最後に紹介できればと思います。
公式HP:https://www.postman.com

良い所

  • パラメータの入力のしやすい
  • レスポンスデータが整形されて見やすい
  • 通信プロトコルのカバー率(ほぼ全て?)
  • 基本無料
  • アプリ / ウェブどちらでも使用可能
  • そして無料

全てにおいて優秀です。

curlもそうですが、フロント/バックエンド関係なく通信部分の確認は
使用頻度が高いと思いますので、ぜひ利用してみてください。

参考サイト一覧

https://curl.se
https://www.yoheim.net/blog.php?q=20171201
https://www.postman.com