wgetは、ウェブサーバーからファイルをダウンロードするためのコマンドラインツールとして、多くの開発者に利用されています。本文では、Wgetというコマンドツールの基本情報を紹介した上、その使い方をもわかりやすく解説していこうと思います。
wgetとは
wgetは、ウェブサーバーからファイルをダウンロードするためのコマンドラインツールです。Linuxやその他のUNIX系オペレーティングシステムで利用できます。
wgetの特徴
wgetの特徴といえば、主に次のような特徴があります。
- リカーシブダウンロード
ウェブサイト全体をミラーリングできます。リンクを辿ってサイト内のすべてのファイルをダウンロードできます。 - 再開機能
ダウンロードが中断した場合、後で同じ場所から再開することができます。 - 並列ダウンロード
複数の接続を使ってファイルを分割してダウンロードし、転送速度を向上させることができます。 - バックグラウンド動作
ウェブページのダウンロードをバックグラウンドで実行できます。 - 再試行
一時的な問題で接続に失敗した場合、自動的に再試行します。 - ログ記録
ダウンロード活動を記録したログファイルを作成できます。
wgetは、サーバー管理者がウェブサイトのバックアップを取ったり、ウェブクローラーを構築したり、大量のデータをダウンロードする必要がある場合に非常に役立ちます。コマンドラインで使うので自動化も簡単です。
wgetはAPIをも扱える?
APIとは、アプリケーション間でデータを交換するためのインターフェースです。WgetはHTTPやFTPなどのプロトコルを使ってデータを転送することができます。そこで、wgetを使ってAPIを扱ったりすることもできます。
- RESTful APIからデータ取得
多くのWebサービスがRESTful APIを提供しています。WgetでAPIエンドポイントにHTTPリクエストを送ることで、JSONやXMLなどの形式でデータを取得できます。 - API認証
WgetにはBasic認証やCookie、Headerなどの設定ができるので、API認証を行えます。 - スクリプト化
Wgetはコマンドラインツールなので、シェルスクリプトと組み合わせてAPIデータ取得を自動化できます。定期的にAPIからデータ取得するバッチ処理を作成できます。 - データ加工
WgetでAPIから取得したデータはローカルに保存できます。別のツールと組み合わせて、データの加工やフィルタリングなどの処理ができます。
しかしWgetにはAPIクライアント機能は備わっていないので、複雑なAPIリクエストを処理するには別のツールが必要な場合があります。APIクライアントライブラリを使うか、Apidog、curl、Postmanなどのより高度なHTTPクライアントを使うことをお勧めします。
wgetでAPIテスト:GET/POST/PUT/DELETEリクエストを送信
WgetはHTTPリクエストを送信できるコマンドラインツールとして、APIエンドポイントにHTTPメソッドを選択して、リクエストを送ることができます。
wget --method=GET|POST|PUT|DELETE [オプション] URL
--method
でHTTPメソッド(GET、POST、PUT、DELETE)を指定します。- オプションには以下のようなものがあります。
--header
でリクエストヘッダを追加できます(例:--header="Content-Type: application/json"
)--body-data
でリクエストボディを指定できます(主にPOST/PUTリクエスト時)--auth-no-challenge
でベーシック認証を行えます
GETリクエストの場合
GETリクエストを送信するためのwgetコマンドラインは次:
wget --method=GET https://api.example.com/data
POSTリクエストでJSONデータを送る場合
また、POSTリクエストでJSONデータを送信する場合は、次のようなコマンドラインを利用することができます。
wget --method=POST --header="Content-Type: application/json" --body-data='{"key":"value"}' https://api.example.com/create
PUTリクエストの場合
そして、リソースを新規作成または完全置換する場合にPUTリクエストを送信することもできます。
// リソースを新規作成または完全置換
wget --method=PUT --body-data='データ' --header="Content-Type: application/json" https://api.example.com/resources/1234
// ファイルの内容をリクエストボディとして使う場合
wget --method=PUT --body-data=@ファイル名 --header="Content-Type: application/json" https://api.example.com/resources/1234
DELETEリクエストの場合
リソースを削除する場合、次のようなコマンドラインを利用して、DELETEリクエストを送信します。DELETEリクエストの場合、通常はリクエストボディは不要です。
wget --method=DELETE https://api.example.com/resources/1234
その他のオプション
データの出力:出力はコマンドライン上に表示されるか、--output-document
でファイルに保存できます。
API認証の実装:APIの認証が必要な場合は--auth-no-challenge
、--user
、--password
オプションを使います。
wget --auth-no-challenge --user=username --password=password https://api.example.com/private
このようにWgetでAPIへの多様なHTTPリクエストを送信できますが、スクリプト化が必要な場合はcURLの方が適している場合もあります。
Apidog:より直感にAPIリクエストをテスト&管理
より高度なAPIリクエストを送信する場合、Apidogという直感的で使いやすいGUIのAPIクライアントツールを皆さんにおすすめします。
Apidogを使用すると、どの種類のHTTPリクエストをも直感的なUIで送信できるので、非常に便利です。

Apidogは、十数種のHTTPメソッドにも対応可能なので、GET、POST、PUT、DELETEなどのリクエストを送信する場合でも、上記画像のように直感的なUIで簡単に指定してリクエストを送信することができます。
また、Apidogを使ってAPIリクエストを送信してレスポンスを取得すると、そのリクエスト情報をユースケースとして保存することで、APIを効率的に管理することもできます。
Wgetの実装コードをも自動生成
Wgetの実装コードを手動で書きたくない場合でも、Apidogを使って、1クリックでそれを生成することができるので、実装コードを手動で記述しなくても、簡単に取得できます。
ステップ⒈Apidogで先に保存したAPIかRequestを選択して、右側パネルで「コード生成」にガーソルを置き、「クライアントコードを生成」を選択します。

ステップ⒉コード生成ウィンドウで、「Shell」を選択し、「wget」を選択すると、wgetの実装コードを一瞬で生成することができます。

まとめ
この記事では、Wgetというコマンドラインツールについて詳しく解説しました。Wgetはウェブサーバーからファイルをダウンロードするためのコマンドラインツールで、リカーシブダウンロード、再開機能、並列ダウンロード、バックグラウンド動作、再試行、ログ記録などの特徴がありますし、HTTPやFTPなどのプロトコルを使ってデータを転送できるため、APIからデータを取得したり、APIをテストするためにも利用できます。RESTful APIからデータを取得したり、API認証を行ったり、スクリプト化してバッチ処理をも作成できます。
また、より高度なAPIリクエストを送信する場合は、GUIのAPIクライアントツール「Apidog」を利用するとよりスムーズにテストできます。ApidogではHTTPメソッドを直感的に指定でき、APIリクエストの管理も行えます。さらに、WgetのコードをApidogで自動生成することもできます。
Wgetはコマンドラインツールとしてファイルのダウンロードに優れていますが、APIのテストにも役立ちます。しかし複雑なAPIの場合は、ApidogのようなデディケイトされたAPIクライアントツールを使うことをおすすめします。