# HTTP 請求

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

無需 OpenAPI 文件或應用目錄操作，直接呼叫 HTTP 介面。

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" } }
}
```

執行前替換示例地址。逐項設定查詢參數或請求標頭時，先設定該組的欄位名，再綁定 `query.NAME` 或 `header.NAME`。整個物件模式則使用 `query` 或 `headers`。

HTTP 請求發起一次 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 key 等方式。憑證欄位接受變數或上游輸出，不接受直接寫入的固定憑證。Bearer 使用 `auth.token`，Basic 使用 `auth.username` 和 `auth.password`。

認證方式按整體替換。切換參數模式時，會移除已刪除連接埠的綁定，並按編輯契約保留已設定的欄位名。

## 結果

輸出始終為 `body`、`statusCode` 和 `headers`。JSON 陣列仍作為一個完整的 body 值回傳。可根據介面選擇自動、JSON 或文字解析。

預設成功策略將非 2xx 狀態視為失敗。如果需要由下游條件節點檢查非成功回應，可設定 `statusPolicy: "all"`。網路錯誤和解析錯誤仍然會失敗。

## 錯誤處理

HTTP 請求支援一般重試和 `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)
