---
pkg: '@nocobase/plugin-workflow-request'
---

# HTTP リクエスト

## はじめに

別のWebシステムと連携する必要がある場合、HTTPリクエストノードを利用できます。このノードは、実行時に設定に基づいて指定されたアドレスへHTTPリクエストを送信し、JSONまたは`application/x-www-form-urlencoded`形式のデータを送信して、外部システムとのデータ連携を実現します。

Postmanのようなリクエスト送信ツールに慣れている方であれば、HTTPリクエストノードの使い方はすぐに習得できます。これらのツールとは異なり、HTTPリクエストノードの各パラメーターには、現在のワークフローのコンテキスト変数を使用できます。これにより、現在のシステムのビジネス処理と密接に連携させることが可能です。

## インストール

内蔵プラグインのため、インストールは不要です。

## ノードの作成

ワークフロー設定画面で、フロー内のプラス（「+」）ボタンをクリックして、「HTTPリクエスト」ノードを追加します。

![HTTP リクエスト_追加](https://static-docs.nocobase.com/46f2a6fc3f6869c80f8fbd362a54e644.png)

## ノード設定

![HTTPリクエストノード_ノード設定](https://static-docs.nocobase.com/2fcb29af66b892fa704add52e2974a52.png)

### リクエストメソッド

選択可能なHTTPリクエストメソッドは、`GET`、`POST`、`PUT`、`PATCH`、`DELETE`です。

### リクエストURL

HTTPサービスのURLです。プロトコル部分（`http://`または`https://`）を含める必要があり、`https://`の使用を推奨します。

### リクエストデータ形式

リクエストヘッダーの`Content-Type`です。サポートされている形式については、「[リクエストボディ](#リクエストボディ)」セクションを参照してください。

### リクエストヘッダー設定

リクエストヘッダー部分のキーと値のペアです。値にはワークフローのコンテキスト変数を使用できます。

:::info{title=ヒント}
`Content-Type`リクエストヘッダーはリクエストデータ形式で設定済みのため、ここで入力する必要はありません。上書きしても無効になります。
:::

### リクエストパラメーター

リクエストのクエリ部分のキーと値のペアです。値にはワークフローのコンテキスト変数を使用できます。

### リクエストボディ

リクエストのボディ部分です。選択された`Content-Type`に応じて、異なる形式がサポートされます。

#### `application/json`

標準的なJSON形式のテキストをサポートしています。テキストエディターの右上にある変数ボタンから、ワークフローのコンテキスト変数を挿入できます。

:::info{title=ヒント}
変数はJSON文字列内で使用する必要があります。例：`{ "a": "{{$context.data.a}}" }`。
:::

#### `application/x-www-form-urlencoded`

キーと値のペア形式です。値にはワークフローのコンテキスト変数を使用でき、変数が含まれる場合は文字列テンプレートとして解析され、最終的な文字列値に連結されます。

#### `application/xml`

標準的なXML形式のテキストをサポートしています。テキストエディターの右上にある変数ボタンから、ワークフローのコンテキスト変数を挿入できます。

#### `multipart/form-data` <Badge>v1.8.0+</Badge>

フォームデータのキーと値のペアをサポートしています。データタイプでファイルオブジェクトを選択すると、ファイルをアップロードできます。ファイルは、コンテキスト内に存在するファイルオブジェクトを介してのみ変数で選択できます（例えば、ファイルコレクションのクエリ結果や、関連するファイルコレクションのリレーションデータなど）。

:::info{title=ヒント}
ファイルデータを選択する際は、変数が単一のファイルオブジェクトに対応していることを確認してください（多対多のリレーションシップクエリでは、リレーションシップフィールドの値は配列になるため、ファイルのリストではないことを確認してください）。
:::

### タイムアウト設定

リクエストが長時間応答しない場合、タイムアウト設定により、そのリクエストの実行をキャンセルできます。リクエストがタイムアウトすると、現在のワークフローは失敗ステータスで早期に終了します。

### 失敗を無視

リクエストノードは、標準HTTPステータスコードの`200`から`299`（含む）を成功ステータスと見なし、それ以外はすべて失敗と見なします。「失敗したリクエストを無視してワークフローを続行する」オプションがチェックされている場合、リクエストが失敗しても、後続の他のワークフローノードの実行が続行されます。

## 応答結果の使用

HTTPリクエストの応答結果は、後続のノードで使用できるように[JSONクエリ](./json-query.md)ノードで解析できます。

`v1.0.0-alpha.16`以降のバージョンでは、リクエストノードの応答結果の3つの部分をそれぞれ変数として使用できます。

*   応答ステータスコード
*   応答ヘッダー
*   応答データ

![HTTPリクエストノード_応答結果の使用](https://static-docs.nocobase.com/20240529110610.png)

応答ステータスコードは通常、`200`や`403`などの数値形式の標準HTTPステータスコードです（具体的な値はサービスプロバイダーによって異なります）。

応答ヘッダー（Response headers）はJSON形式で、JSON形式の応答データを含みます。これらを使用するには、JSONノードで解析する必要があります。

## 例

例えば、リクエストノードを使用してクラウドプラットフォームと連携し、通知SMSを送信できます。Alibaba CloudのSMS送信APIを例にとると、設定は以下のようになります（関連パラメーターは、ご自身でドキュメントを参照して調整してください）。

![HTTPリクエストノード_ノード設定](https://static-docs.nocobase.com/20240515124004.png)

ワークフローがこのノードの実行をトリガーすると、設定された内容でAlibaba CloudのSMS APIを呼び出します。リクエストが成功した場合、SMSクラウドサービスを通じてSMSが送信されます。