# HTTP リクエスト

Source: https://openflow.run/ja/docs/nodes/http-request/
Language: ja
Product version: 0.1.0-beta.77

OpenAPI 文書や Connector の Action を使わず、HTTP エンドポイントを呼び出します。

HTTP Request は単一の HTTP(S) 呼び出しに使います。ポートの生成、パラメーターのエンコード、応答の解析を担当します。

## リクエストを設定する

業務設定で、メソッド、クエリ・ヘッダーモード、認証、ボディ形式、応答形式、ステータスポリシーを選びます。URL やリクエスト値は、固定値も含めて `inputs` に指定します。

```json
{
  "op": "node.add", "as": "request", "type": "http-request", "name": "Read service status",
  "config": { "method": "GET", "responseFormat": "json", "statusPolicy": "success" },
  "inputs": { "url": { "kind": "value", "value": "https://api.example.com/status" } }
}
```

実行前に実際の URL に置き換えます。項目別のクエリやヘッダーでは、グループの名前を設定して `query.NAME` または `header.NAME` をバインドします。オブジェクト全体のモードでは `query` または `headers` を使います。

HTTP Request が 1 回の GET を送り、body、statusCode、headers を返します。

**入力**
GET https://api.example.com/status

**想定される結果**
JSON の呼び出しに成功すると、body に解析済み応答、statusCode に HTTP ステータスが入ります。

**実行前の準備**
実際の URL に置き換え、必要に応じて認証を設定してください。

[ワークフローをダウンロード](https://openflow.run/docs/examples/http-status.openflow.json)

## 認証

Bearer、Basic、API キーなど、提示された認証方式に対応します。認証情報の入力元には変数や上流出力を使い、固定の認証情報は直接指定できません。Bearer は `auth.token`、Basic は `auth.username` と `auth.password` を使います。

認証は方式全体を置換します。パラメーターモードを変更すると、編集仕様に従って設定名を保持しながら、削除されたポートのバインドを解除します。

## 結果

出力は常に `body`、`statusCode`、`headers` です。JSON 配列も 1 つの body 値になります。エンドポイントに合わせて自動、JSON、テキストの解析を選びます。

デフォルトでは 2xx 以外を失敗とします。非成功応答を下流の Condition で確認するなら `statusPolicy: "all"` を使います。ネットワークや解析の失敗は引き続きエラーです。

## エラー処理

通常の再試行と `onError` に対応します。専用のエラー実行エッジはありません。書き込みを再試行すると外部で操作が重複する場合があるため、エンドポイントの動作に合わせて設定してください。

## 参照元

*   [docs/authoring/node-authoring.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/authoring/node-authoring.md#http-request)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#http-request-tasks)
*   [packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts)
