canonical_id: "http_request" display_name: "HTTP 請求" category: "api" version: "v1" wasi_target: "preview1" stability: "floating" runtime_compat: - "cf-workers" - "workerd" - "wazero" constraints: max_size_kb: 2048 max_cold_start_ms: 50 no_network_syscall: false no_filesystem_syscall: true io_model: "stdin_stdout_json" input_schema: type: object required: [url] properties: url: type: string description: 目標 URL(必填) method: type: string description: HTTP 方法(GET / POST / PUT / DELETE 等),預設 GET default: GET headers: type: object description: 自訂 HTTP headers(key-value 物件) additionalProperties: type: string body: type: string description: 模式 A — body 字串(自行 stringify 後傳) body_json: type: object description: 模式 B — body 物件,零件內部 JSON.stringify(yaml 端不用手組字串) output_schema: type: object properties: success: type: boolean data: type: object properties: body: type: string description: HTTP 回應 body(字串) gherkin_tests: - scenario: "缺少 url" given: '{"method":"GET"}' then_contains: '{"success":false' - scenario: "基本 GET 請求" given: '{"url":"https://example.com"}' then_contains: '{"success":true' tags: [integration, http, request, api] description: "發送任意 HTTP 請求並回傳 status 與 body。透過 host function 呼叫,.wasm 本身不含網路 syscall。headers 由用戶手動填入。" config_example: | http_call: # 節點名稱(可自訂) url: "" # 目標 URL(必填) method: "GET" # HTTP 方法(選填,預設 GET) headers: # 自訂 headers(選填,用戶手動填入) Content-Type: "application/json" Authorization: "Bearer " body: {} # 請求 body(選填)