如何从BigQuery通过PUT/POST调用REST API发送查询结果
问题解决:Cloud Workflows YAML缩进错误及后续对接BigQuery方案
错误原因
你遇到的是YAML缩进不规范导致的解析错误,YAML对缩进层级要求严格,原代码中post_message步骤与同级的init步骤缩进未对齐,同时assign下的变量列表缩进也存在层级混乱,导致解析器无法识别块映射结构。
修正后的Workflow代码
main: steps: - init: assign: - api_endpoint: "https://closed.abc.com/api/v1/testCase/fqn/testCaseResult" - auth_token: "token" - request_body: result: "Add a test case result data result" testCaseStatus: "Failed" testResultValue: - name: "outliers A" value: "10" - name: "outliers B" value: "10" - name: "outliers C" value: "10" timestamp: 1679539970 - request_headers: Content-Type: "application/json" Authorization: concat("Bearer ", $auth_token) # 调用API端点发送请求体 - post_message: call: http.put args: url: ${api_endpoint} headers: ${request_headers} body: ${request_body} result: the_message # 返回API响应体 - return_value: return: ${the_message.body}
关键修正点
steps下的所有步骤(init/post_message/return_value)缩进统一,确保为同级列表项assign下的每个变量相对于assign:缩进2个空格,保持层级清晰testResultValue下的数组子项,相对于父键缩进2个空格,保证数组结构正确
修正后的代码会自动将request_body序列化为你在Postman中使用的标准JSON格式,可正常发送请求。
后续对接BigQuery的实现方案
- 在Workflow中添加BigQuery查询步骤:使用
bigquery.query方法执行你的数据完整性检查SQL,获取查询结果 - 映射查询结果到请求体:解析查询返回的数据,将求和匹配状态赋值给
testCaseStatus,把不匹配的明细数据填充到testResultValue数组中 - 配置自动化调度:通过BigQuery调度器定期触发该Workflow,实现数据完整性结果的自动推送
内容的提问来源于stack exchange,提问作者Vaiva
相关产品推荐
相关产品推荐

