このレッスンのロックを解除するには、まず「レッスン1:n8nと統合のマインドセット入門」を完了してください。前のレッスンに戻る

はじめに

HTTP Requestノードはn8nの万能ツールです。必要なサービスの組み込み統合が存在しない場合、このノードを使えばあらゆるREST APIを直接呼び出せます。GET、POST、PUT、PATCH、DELETE、すべて対応しています。レスポンスが返ってくると、n8nは完全なJSONペイロードを提供し、式を使って必要なフィールドを正確に抽出できます。

このレッスンでは、ノードの設定、リクエストの送信、レスポンス構造の読み取り、特定の値をワークフローの次のステップへ接続するまでの一連のサイクルを順を追って説明します。

HTTP Requestノードの設定

キャンバスにHTTP Requestノードを追加し、最初に3つの項目を入力します。HTTPメソッド、URL、そして認証(APIが必要な場合)です。

認証不要な公開エンドポイントの場合、URLの式フィールドに以下のように記述する最小限のGETになります:

javascript
https://api.open-meteo.com/v1/forecast?latitude=51.5&longitude=-0.1&current_weather=true

APIキーが必要な場合は、AuthenticationセクションでHeader Authを選択し、ヘッダー名(一般的にはAuthorization)と値(一般的にはBearer YOUR_TOKEN)を設定します。トークンはn8nのCredentialに保存すれば、ノード内にハードコードされません。

POSTリクエストでリソースを作成するなど、JSONボディを送信する必要がある場合は、Body Content TypeをJSONに設定し、Bodyフィールドにペイロードを記述します:

json
{
"name": "{{ $json.customerName }}",
"email": "{{ $json.customerEmail }}"
}

二重波括弧の構文はn8nの式エンジンで、実行時に前段ノードの出力から値を取得します。

HTTP Requestノードの設定手順を示すフローチャート:メソッド → URL → 認証 → ボディ → 実行

レスポンス構造の読み取り

Execute Nodeをクリックすると、n8nは右側のOutputパネルにレスポンスを表示します。すべてのレスポンスでは3つの項目が表示されます:ステータスコード、ヘッダー、ボディ。デフォルトでn8nはJSONボディを自動解析し、構造化データとして返します。これにより、レスポンス内を自由にたどれます。

Open-Meteo APIが以下を返すと仮定します:

json
{
"latitude": 51.5,
"longitude": -0.1,
"current_weather": {
"temperature": 14.2,
"windspeed": 11.3,
"weathercode": 3
}
}

Outputパネルでツリーをクリックすると、各ネストされたフィールドを確認できます。この探索ステップは重要です。式を書く前に必ず行い、正確なキーパスを把握しておいてください。

APIがJSON以外のレスポンス(プレーンテキスト、XMLなど)を返す場合は、Return Full Responseオプションを有効にし、Response FormatをTextに変更し、その後で下流のCodeノードで手動解析を行います。

式を使ったデータ抽出

構造がわかれば、下流の任意のノードでn8nの式構文を使ってフィールドを参照します。HTTP Requestの出力のルートには、常にノード名でアクセスできます。

次のノードで上記の例から気温を取得するには:

javascript
{{ $node["HTTP Request"].json["current_weather"]["temperature"] }}

あるいは、その直後のノード(暗黙の前段ノード)内にいる場合は、簡略記法を使用します:

javascript
{{ $json["current_weather"]["temperature"] }}

APIが配列を返す場合(例えば注文のリスト)、レスポンスボディ自体が配列であるか、dataのようなキーの配下にネストされています。これをループ処理するには、HTTP RequestノードをSplit In Batchesノードに接続するか、Item ListsノードをSplit Out Itemsに設定して接続します。これにより、下流の各実行が一度に1つのアイテムを受け取るようになります。

分割せずに3番目のアイテムのidフィールドを直接参照する方法は次のとおりです(ゼロインデックス):

javascript
{{ $json["data"][2]["id"] }}
🖥️ [ここに説明図を挿入することを推奨:左側にJSONレスポンスツリー、右側に式参照へのマッピング矢印を示す図]

よくある間違い

Content-Typeヘッダーの欠落は、データをPOSTする際のもっとも頻繁な問題です。Body Content TypeをJSONに設定すれば、n8nが自動的にヘッダーを追加します。Rawに切り替える場合は、手動でヘッダーを追加してください:Content-Typeに値application/jsonを設定します。

もう一つのよくある間違いは、想定より1階層深い場所にあるフィールドを参照しようとすることです。式を書く前に必ずOutputパネルで正確なパスを確認してください。APIレスポンスの形状についての推測は、間違いなく外れることのほうが多くあります。

3つ目の問題はレート制限です。ワークフローが同じAPIに対して頻繁に実行される場合、イテレーション間にWaitノードを追加し、APIドキュメントでレート制限ヘッダー(Retry-After、X-RateLimit-Remaining)を確認してください。n8nはレート制限を自動では処理しません。

まとめ

HTTP Requestノードは3つの動きで構成されます:メソッドとURLを設定し、必要に応じて認証し、オプションのボディを送信します。実行後は、Outputパネルを使ってレスポンスツリーを探索し、jsonの簡略記法またはjsonの簡略記法またはnode["NodeName"].jsonを使ってノード間アクセスで下流ノードの特定フィールドを参照します。配列レスポンスの場合は、個別処理の前にアイテムを分割します。このサイクルに慣れることで、n8nでほぼすべてのREST APIとの統合が可能になります。

レッスンの練習

レッスンのチェックポイント

学んだ内容を復習し、回答へのフィードバックを受けましょう。

0/7
01直前のHTTP RequestノードのJSONレスポンスから'status'というフィールドにアクセスする正しい簡略記法はどれですか?
02n8nのHTTP RequestノードでJSONボディを含むPOSTリクエストを送信する際、n8nが正しいContent-Typeヘッダーを自動的に含めるようにするには、どの設定を行う必要がありますか?
03response.orders[0].idという階層でデータがネストされたAPIレスポンスを受け取りました。下流ノードでその値を正しく取得する式はどれですか?
04APIが'items'キーの配下のJSON配列で50個の商品のリストを返しました。下流ノードで各商品を個別に処理したい場合、n8nでの推奨アプローチは何ですか?
05式を書く前にAPIレスポンスの正確なキーパスを探索するのに最適な場所はどこですか?
06n8nのCredentialに保存されたAPIトークンをBearerトークンとして渡したい場合、HTTP Requestノードのどの認証方式がこれに適していますか?
07同じエンドポイントに対して連続して迅速に呼び出しを行うワークフローを実行した場合、n8nはAPIレート制限を自動的に処理する。
回答済み · 0/7