- はじめに
- 基本情報
- BPMN を使用したプロセス モデリング
- ケース管理を使用したプロセス モデリング
- フローを使用したプロセス モデリング
- プロセスの実装
- プロセスの操作
- プロセスの監視
- プロセスの最適化
- 参考情報
HTTP 要求ノードの構成、認証、応答の分岐パターン。
機能
HTTP 要求を URL に送信し、下流のノードで応答を利用できるようにします。
2 つの HTTP ノード
Flow には 2 つの HTTP ノードが用意されています。認証の処理方法に基づいて選択してください。
- HTTP 要求 (
core.action.http) - メソッド、URL、ヘッダー、本文、認証をインラインで設定します。API キー ヘッダーやベアラー トークンなどの資格情報を自分で管理する外部 REST エンドポイントに使用します。これは、このページで説明されているノードです。 - マネージド HTTP 要求 (
core.action.http.v2) - Integration Service で管理されるコネクションを介して要求を送信するため、認証はインラインで設定するのではなく、そのコネクションによって処理されます。Integration Service 経由で接続したサービスに対して資格情報を一元管理する必要がある場合に使用します。
構成のリファレンス
| フィールド | Required | 既定 (Default) | 説明 |
|---|---|---|---|
| モード | はい | 手動 | 要求の設定方法[ 手動 ] を選択して要求を自分で定義するか、[ API 定義 ] を選択して OpenAPI または Swagger 仕様から構成をインポートします。 |
| cURL からインポート | いいえ | なし | cURL コマンドを解析し、メソッド、URL、ヘッダー、本文を自動的に入力します。設定フィールドの上にあるツールバーの [ cURL ] ボタンを選択します。 |
| HTTP メソッド | はい | GET | 要求の HTTP メソッド。サポートされている値は、 GET、 POST、 PUT、 PATCH、 DELETEです。 |
| URL | はい | なし | 要求の送信先の完全な URL ( https:// スキームを含む)。変数式がサポートされています (例: https://api.example.com/users/$vars.userId)。 |
| ヘッダー | いいえ | なし | HTTP 要求ヘッダーとして送信されるキーと値のペア。ヘッダー名と値では、変数式がサポートされています。 |
| Query Parameters | いいえ | なし | キーと値のペアをクエリ文字列として URL に追加します。名前と値では、変数式がサポートされています。 |
| コンテンツの種類 | いいえ | application/json | 要求本文の Multipurpose Internet Mail Extensions (MIME) の種類です。サポートされている値は、 application/json、 application/xml、 text/plain、 application/x-www-form-urlencodedです。 |
| 本文 | いいえ | 空 | POST、PUT、PATCH の要求の要求本文です。コード エディターで値を直接入力するか、変数の式を使用します。 |
| ブランチ | いいえ | 既定の出力のみ | 応答のプロパティに基づいてプロセスをルーティングする応答分岐各ブランチには、名前と条件の式があります。 |
| Timeout | いいえ | PT15M | 応答を待機する最大時間です (国際標準化機構 (ISO) 8601 形式。 |
| リトライ回数 | いいえ | 0 | 要求が失敗した場合に要求をリトライする回数です。リトライは、タイムアウト値をバックオフ間隔として使用します。 |
エディターは、 Authorization、 Content-Type、 Accept、 X-Api-Keyなどの一般的なヘッダー名を提案します。クエリ パラメーターの場合、名前 page と 値 2 のパラメーターを追加すると、要求が https://api.example.com/items?page=2に送信されます。
ノードは分岐の条件を順番に評価し、最初の一致に従います。一致する分岐がない場合、プロセスは 既定 の出力に従います。
分岐条件式は、判断ノードおよびスイッチ ノードと同じ JavaScript 構文を使用します。
$vars.httpRequest1.output.statusCode === 200
$vars.httpRequest1.output.statusCode === 200
$vars.httpRequest1.output.statusCode >= 400
$vars.httpRequest1.output.statusCode >= 400
各分岐は、キャンバス上のノードの右側に既定 のハンドルとともに 、個別の出力ハンドルとして表示されます。
一般的なタイムアウト値は次のとおりです。
PT30S- 30 秒PT5M- 5 分PT15M- 15 分PT1H- 1 時間
資格情報
要求を認証するには、次の 2 つの方法があります。
手動認証
資格情報を要求ヘッダーで直接渡します。API キー認証の場合は、名前 X-Api-Key 、値をキーに設定したヘッダーを追加します。ベアラー トークン認証の場合は、Bearer <your-token>のような値の Authorization ヘッダーを追加します。
トークンや API キーなどの機密性の高い値をハードコーディングするのではなく、シークレット変数に格納します。
Integration Service のコネクタ
[プロパティ] パネルで、事前設定済みの Integration Service のコネクションを選択します。このコネクションでは資格情報が要求に自動的に挿入されるため、ヘッダーを自分で管理する必要はありません。
Integration Service コネクタは、資格情報の一元管理、トークンの自動更新が必要な場合、または複数のプロセスが同じ API 資格情報を共有している場合に使用します。
Integration Service のコネクタは、UiPath Automation Cloud ポータルで設定します。設定手順については、Integration Service のドキュメントをご覧ください。
例
例 1 -- 基本的な GET 要求
パブリック API から 1 つのリソースを取得します。
ノードは、 HTTP メソッド を GET に設定し、 URL を https://jsonplaceholder.typicode.com/posts/1に設定して構成します。その他のすべてのフィールドは既定値のままです。
応答は下流のスクリプト ノードで利用できます。
const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.statusCode;
return {
title: body.title,
userId: body.userId,
status: status
};
const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.statusCode;
return {
title: body.title,
userId: body.userId,
status: status
};
応答オブジェクトは $vars.httpRequest1.output で利用可能で、次の 3 つのフィールドが含まれます。
$vars.httpRequest1.output.body- 解析された応答本文です。$vars.httpRequest1.output.statusCode- HTTP ステータス コード (例:200$vars.httpRequest1.output.headers- 応答ヘッダーを含む オブジェクトです
例 2 -- JSON 本文の POST 要求
JSON ペイロードを送信して新しいリソースを作成します。
ノードは、[HTTP メソッド] を [POST] に設定し、[URL を https://api.example.com/orders] に設定し、[Authorization ヘッダー] の値を Bearer $vars.apiTokenに設定し、[コンテンツの種類] を [application/json] のままにして構成します。本体:
{
"product": "Widget",
"quantity": 5,
"customer_id": "cust_12345"
}
{
"product": "Widget",
"quantity": 5,
"customer_id": "cust_12345"
}
作成されたリソースの ID は、下流のノードで確認できます。
const orderId = $vars.httpRequest1.output.body.id;
return { orderId: orderId };
const orderId = $vars.httpRequest1.output.body.id;
return { orderId: orderId };
要求が失敗し、エラー ハンドルを接続した場合、エラーの詳細は $vars.httpRequest1.errorで確認できます。
// In a Script node connected to the error handle
const errorMessage = $vars.httpRequest1.error.message;
const errorStatus = $vars.httpRequest1.error.status;
return {
failed: true,
reason: errorMessage,
httpStatus: errorStatus
};
// In a Script node connected to the error handle
const errorMessage = $vars.httpRequest1.error.message;
const errorStatus = $vars.httpRequest1.error.status;
return {
failed: true,
reason: errorMessage,
httpStatus: errorStatus
};
エラー オブジェクトには以下が含まれます。
codemessagedetailcategorystatus
例 3 -- 分岐を使用して応答をルーティングする
応答分岐により、プロセスは API の応答に基づいて異なるパスをたどることができます。別個の判断ノードを設ける必要がありません。
ノードは、[HTTP メソッド] を [GET] に設定し、[URL を https://api.example.com/users/$vars.userId] に設定し、[分岐] セクションに 2 つの分岐 (条件 $vars.httpRequest1.output.statusCode === 200 の Success と条件 $vars.httpRequest1.output.statusCode === 404の Not Found ) で構成されます。
これで、ノードのキャンバス上に次の 3 つの出力ハンドルが追加されました。
- 成功 - ユーザー データを処理するノードに接続します。
- 見つかりません - 見つからないユーザー ケースを処理するノードに接続します
- 既定 - 他のステータス コードのフォールバック パスに接続します
下流の各パスは完全な応答を受け取ります。たとえば、Success 分岐では次のようになります。
const user = $vars.httpRequest1.output.body;
return { name: user.name, email: user.email };
const user = $vars.httpRequest1.output.body;
return { name: user.name, email: user.email };
これを使用すべき状況と統合ノード
HTTP 要求ノードは、API を呼び出すための汎用ツールとして使用します。呼び出しているサービスに専用の統合ノードが存在する場合は、専用の統合ノードを使用します。
| HTTP 要求は次の場合に使用します。 | 統合ノードは、次の場合に使用します。 |
|---|---|
| API のノード パレットには専用のコネクタがありません | サービスに対して Slack、Salesforce、HubSpot などのコネクタが存在する |
| ヘッダー、クエリ パラメーター、本文の形式を完全に制御する必要がある | 手動で設定しない、事前に型指定された入力と出力が必要な場合 |
| 新しい API または内部サービスに対してプロトタイピングを行う場合 | Integration Service 経由で自動認証とトークン更新が必要な場合 |
| この API では、非標準の認証スキームが使用されます | API がコントラクトを変更しても中断しない、保守可能なプロセスが必要である |
経験則: 最初にノード パレットでコネクタを検索します。HTTP 要求にフォールバックするのは、対象のサービスに何も存在しない場合にのみ行います。
関連ページ
- スクリプト ノード - HTTP 応答データを変換および処理する
- 意思決定ノード - 応答分岐の代替として、条件に基づいて分岐します
- 変数とデータ フロー -
$vars、式の構文、変数のスコープ設定