curlコマンドとは?Web APIのテストやHTTP・JSON通信の実践例
URLを叩いて様々なリクエストを送信できる「curl」コマンドについて、REST APIのテスト(GET/POST)やヘッダー確認などの実務での使い方を解説。
curlコマンドとは?
curl(カール)は、コマンドライン(ターミナル)からさまざまなプロトコル(主にHTTPやHTTPS)を使ってURLとデータの送受信を行うためのツールです。
「Client URL」に由来しており、ブラウザを開かなくてもWebページの内容を取得したり、サーバーにデータを送信したりすることができます。
主な役割とメリット
Webアプリケーション(特にREST API)の開発において、自分が作ったAPIが正しく動作するかどうかを手軽にテストする「デバッグツール」として最強の威力を発揮します。
どのような場面で使われるか
シェルスクリプトの中から外部のAPIを叩いてデータを取ってきたり、障害時にWebサーバーがどんなHTTPステータスコード(200 OK や 500 Errorなど)を返しているかヘッダーだけを確認する際に利用されます。
実務でよく使うオプションとAPIテスト
- 単純なGETリクエスト:
curl https://example.com/api/users - POSTリクエストでJSONを送信する:
REST APIにデータを新規登録する際に非常によく使う構文です。
curl -X POST -H "Content-Type: application/json" -d '{"name":"Taro", "age":25}' https://example.com/api/users-X POST: HTTPメソッドをPOSTに指定-H: HTTPヘッダーを指定(今回は中身がJSONであることを通知)-d: 送信するデータ本体(ペイロード)を指定
- HTTPヘッダー情報の確認 (
-I):curl -I https://example.comページ本体(HTML文書)は取得せず、サーバーの種類(Nginxなど)やステータスコードだけを素早く確認します。 - アクセス結果をファイルに保存 (
-o,-O):curl -O https://example.com/file.zip(wgetコマンドの代わりとして使われます)
実務上の注意点
curlの結果で返ってくるJSONは通常1行で出力されるため、人間には非常に読みづらいです。
実務では jq というコマンドと組み合わせて、curl https://api.example.com | jq のように実行し、JSONをきれいに整形(フォーマット)して表示するのが定石です。
よくあるエラーやトラブルシュート
- Connection refused: サーバーが落ちているか、指定したポート(例: 8080)でWebサーバーのアプリケーションが起動していない場合に発生します。
- 証明書エラー(SSL certificate problem): オレオレ証明書など、信頼できないSSL証明書を使っているAPIを叩くとはじかれます。
-k(または--insecure)オプションをつけることでエラーを無視して接続を強行できます(テスト用途のみ)。
まとめ
curlコマンドを使いこなせるかどうかで、バックエンド開発やAPI連携時のデバッグスピードが劇的に変わります。PostmanなどのGUIツールも便利ですが、サーバー上でサッと確認できるcurlの構文(特にJSONのPOST方法)は暗記しておいて損はありません。
関連する用語 (linux)
全12件を見るgrepコマンドとは?ログ調査やファイル検索の実践的な使い方を解説
Linuxの検索コマンド「grep」の基礎から、正規表現を使った高度な検索、実務でのログ調査テクニックまで詳しく解説します。
Cannot connect to the Docker daemon の原因と解決策
Dockerコマンド実行時に「Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?」と表示されるエラーの直し方を解説します。
Gitのコンフリクト(競合)解消のやり方
複数人で同じファイルを編集して `git merge` や `git pull` した際に発生する「コンフリクト」の直し方と安全な運用方法を解説します。
sshコマンドとは?公開鍵認証の仕組みと安全なサーバー接続の実務
Linuxの遠隔操作に必須の「ssh」コマンドについて、公開鍵・秘密鍵を使った安全な接続方法(公開鍵認証)や実務でのポート指定などを解説します。
error: failed to push some refs to の原因
`git push` した時に「リモート側に自分が持っていない変更がある」として拒否された場合の原因と、`git pull` や `git push -f` の判断基準を解説します。
Gitの Detached HEAD の意味と直し方
ブランチ名ではなく特定のコミットIDを直接チェックアウトした状態「Detached HEAD」から、安全に元のブランチに戻る方法を解説します。