虽然我们使用 zconbt 命令行工具和 API 规范文件生成 API 请求者工件,但 zconbt 不会为多个错误响应生成副本。假设在 API swagger 文件中,我们为 HTTP 代码 200、400、500 定义了响应模式,其中每个响应的响应模式定义都不同。现在,如果我们使用 zconbt 生成 copybooks,zconbt 会忽略 400 和 500 的响应模式,并仅生成 200 代码的响应 copybook 结构。现在,当我们从 MF 调用此 API 并获得状态代码为 400 的响应和响应消息(根据 400 的 swagger 中定义)时,zcee 无法转换并将消息以适当的 copybook 变量发送回 MF。这是因为 400 的响应模式已经被 zconbt 首先忽略了。
1 回答
1
正如您所说,z/OS Connect EE 中的 API 请求器功能仅针对 API 调用的成功案例提供 JSON 到 COBOL 的转换。
如果 API 调用以非成功案例完成,则响应信息将按原样在BAQ-RESPONSE-API
结构中返回。
根据知识中心中的示例,您可以按如下方式处理这些响应:
WHEN BAQ-ERROR-IN-API
EVALUATE BAQ-STATUS-CODE
WHEN 400
DISPLAY "Invalid Pet ID"
WHEN 500
DISPLAY "No pet found with ID "
WHEN OTHER
DISPLAY "API returned error "
BAQ-STATUS-CODE
END-EVALUATE
JSON 响应在该字段中可用,如果需要,可以使用COBOL或PL/IBAQ-STATUS-MESSAGE
中的 JSON 支持进行解析。
于 2020-05-01T11:52:18.737 回答