概要
サーバー運用保守やバックエンド開発の現場において、ネットワーク通信の確認やAPIテストに不可欠な標準CUIツール「curl」のコアテクニックを解説します。シンプルなGETリクエストの送信から、RESTful APIのデータ送受信、ヘッダー解析、ネットワーク断に強い大容量ファイルのレジュームダウンロードまで、実務直結のユースケースを体系的に整理しました。
1. 動作環境のセットアップとGETリクエストによるレスポンス取得
実習環境を整えるため、ローカルパッケージインデックスを更新してcurlユーティリティをインストールします。

curlは、様々な通信プロトコルに対応し、URLをベースにデータの送受信を行うための高機能ネットワークコマンドです。
オプションを指定せずにURLのみを渡して実行した場合、標準でHTTP GETリクエストが発行され、リモートサーバーから返却された本文データがターミナル上へ直接展開されます。
⚙️ [頻出主要オプション一覧]
-s : 進捗メーターや通信エラーメッセージなどの表示を抑制するサイレント(silent)モードで動作させます。-i : ペイロード(本文)とともに、サーバー側から受信したHTTPレスポンスヘッダーも併せて出力します。-I : 本文データの取得を省き、HTTPレスポンスヘッダー情報のみをピンポイントで取得します。-X : GET、POST、PUT、DELETEなど、発行したいHTTPリクエストメソッドを明示的に指定します。-d : HTTP POST通信時などにサーバーへ渡すリクエストボディデータを設定します。-H : リクエスト送信時に任意のカスタムHTTPヘッダーを付与します。-o : 受信したレスポンスデータを指定した任意のファイル名でローカルに保存します。-O : リモートサーバー側のファイル名をそのまま引き継いでローカル環境に保存します。-C - : ネットワーク断などで中断された大容量ファイルの転送を、未取得箇所から再開(レジューム)します。-L : Webサーバーから3xx系リダイレクト応答が返された際、最終的な転送先URLまで自動追従します。

-sオプションを付加することで、転送進捗インジケーターや不要な警告ログが非表示となり、純粋なレスポンス本文のみを取り出すことが可能です。
余分な付加情報が完全に排除されるため、シェルスクリプトへの組み込みやパイプライン(|)を用いた別コマンドとの連動処理において真価を発揮します。

2. HTTPレスポンスヘッダーの調査とステータスコードの抽出
リクエスト時に-Iオプションを指定すると、本文(body)データのダウンロードをスキップし、Webサーバーから返されるHTTPヘッダー情報のみを高速に取得できます。
サーバーの返答コード(例: HTTP/2 200)をはじめ、Content-Typeやサーバーソフトウェアの種類を調査する際、ネットワーク帯域を無駄に消費せず瞬時に診断できます。

一方で-iオプションを使用すると、サーバーから届いたHTTPヘッダーと実際のレスポンス本文が同一画面上へ順番に出力されます。
通信のメタデータと実際の返却データの内容を並行して突き合わせられるため、Web APIの挙動調査やトラブルシューティング時に重宝します。

-sで進捗ログを伏せ、-o /dev/nullにより本文出力を破棄した上で、-wオプションを使ってHTTPステータスコードのみを特定フォーマットで切り出すテクニックです。
エンドポイントの死活監視(ヘルスチェック)や、Bashスクリプトによる自動監視処理でリターンコードに応じた条件分岐を実装する際の定番パターンです。

3. REST APIへのデータ送信と認証トークンの連携(POST / JSON通信)
サーバーから返却されるJSONデータをターミナル上で視認性高く整形・抽出できるよう、コマンドライン用JSONプロセッサであるjqを導入します。

-X POSTでリクエストメソッドをPOSTに切り替え、-Hを用いてContent-Typeにapplication/jsonを宣言した上で、-d引数からJSON文字列を送信します。
サーバーへ送出したJSONペイロードが正しく受理されたかどうかは、パイプ(|)経由でjqに渡すことで、カラー表示された構造化データとして一目で確認できます。

認証が必要なエンドポイントへアクセスする際は、-Hオプションを活用してAuthorization: Bearer <トークン>ヘッダーをリクエストに注入します。
JWTやAPIトークンによる認証ガードが敷かれたAPIに対して、必要なクレデンシャルが正しく伝達されているかを検証できます。

4. 大容量ファイルの効率的なダウンロードとレジューム(中断再開)制御
ファイル転送の実習を行うため、専用の作業ディレクトリを準備して対象フォルダへ移動します。

リモートサーバーからバイナリファイルを取得する際は、-oオプションにより保存先ファイル名をsample-100k.binと明示してダウンロードを実行します。
コンソール画面上にバイナリ列が文字化けして直接流出する事故を防ぎ、意図した名称で安全にディスクへ保存できます。

既存ファイルの容量をcurl側で自動検知して未取得地点から転送を継続する-C -と、リモート上のファイル名をそのまま保持する-Oを併用します。
回線状況が不安定なネットワーク環境やギガバイト単位の大容量ファイルを扱う際でも、初めから再ダウンロードする手間を省き、最小限のトラフィックで効率的にリカバリできます。

ダウンロード処理の終了後は、ls -lhコマンドを実行してsample-100k.binのファイルサイズと詳細属性を確認し、要求通りの容量で正常にディスクへ書き込まれたかを検証します。

ここまで、Linux環境におけるcurlコマンドの基礎的なGET通信から、実践的なAPIデバッグ手法、そして大容量ファイルの安全なレジュームダウンロード手順までを網羅して解説しました。
本稿で取り上げた主要オプションや連携テクニックを日常のサーバー管理やスクリプト自動化へ組み込み、開発・運用の効率化にぜひお役立てください。