0

虽然我们使用 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 首先忽略了。

4

1 回答 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 响应在该字段中可用,如果需要,可以使用COBOLPL/IBAQ-STATUS-MESSAGE中的 JSON 支持进行解析。

于 2020-05-01T11:52:18.737 回答