google-cloud-platform - 如何从 http.call (get) 中收到的令牌在 Google Workflows 中进行比较
问题描述
我有一个简单的 Cloud Function 响应:
{"pasValidate":true}
或者
{"pasValidate":false}
我需要 Cloud Workflows 正确比较真假以 采取正确的路线。我试过引号,没有引号,文档中唯一的部分是必须通过响应的“正文”部分引用变量然后使用它(真的,文档中没有其他内容)所以这就是我所做的:
- getData:
call: http.get
args:
url: https://us-central1-ACCOUNT.cloudfunctions.net/Cloud_Function
result: jsonResponse
- evaluateRes:
switch:
- condition: $(jsonResponse.body.pasValidate == "true")
next: logStep1
- condition: $(jsonResponse.body.pasValidate == "false")
assign:
- failLvl: "step1"
next: endFail
在这一切之后,我得到了以下失败运行响应:
in step "evaluateRes": {"message":"TypeError: in conditional predicate: expected boolean, got str","tags":["TypeError"]}
我知道它得到的是一个字符串而不是所需的 True/False,但是在这一点上,我敢于问社区我缺少什么。也许有一些更简单的东西我没有抓住。
资料来源:
解决方案
首先,确保你的函数的响应是 application/json。您可以通过将响应标头设置为application/json
. 例如:
res.setHeader("Content-Type", "application/json");
如果不这样做,您可能会遇到解析问题,如前所述:
当application/json类型的响应存储在变量中时,JSON 响应将转换为您作为响应主体访问的字典。Workflows 包含一个用于访问此数据的内置解析器。
接下来,在使用块时使用花括号{}
而不是括号。删除布尔值上的双引号。()
switch
switch:
- condition: ${jsonResponse.body.pasValidate == true}
next: logStep1
- condition: ${jsonResponse.body.pasValidate == false}
assign:
- failLvl: "step1"
next: endFail
推荐阅读
- jhipster - Jhipster 如何生成 swagger 信息?
- mysql - SQL 打印在一行中
- c# - 在 Windows 10 上访问区域附加设置的数据
- php - 如何抑制执行的 Composer 脚本回显命令?
- bash - 使用过滤器获取要排列的文件列表
- ssl - gRPC SSL 不存在主题替代名称
- forms - 为什么 Flutter 会重新渲染包含带有自己键的 TextFormField 的小部件?
- int - 为什么长生不老药指南说在宏定义中使用引用和取消引用
- javascript - How to reformat form submit url that has GET method on the fly
- excel - 将行值从一张表复制到另一张表以获取 Excel 中匹配的记录