调用 CICS 服务
您可以使用 ibm-cics-api 模块中的调用函数来调用 CICS® 服务。 Node.js 具有两种用于异步活动,回调函数和 promise 的常用机制。 可以使用任一方法。
如果 Node.js 应用程序正在 CICS 中运行,那么调用请求会导致 CICS 启动新任务以运行目标 JSON 服务; 数据将以 JSON 格式在应用程序与 CICS 之间传递,然后将响应返回到应用程序。 以下示例具有公共启动,然后具有两个用于调用 CICS 服务的选项。 您可以使用回调函数,也可以使用 promise。
const cics = require('ibm-cics-api');
let uri = "http://myzos.example.com/exampleApp/json_inquireCatalogWrapper";
let requestData =
{
"inquireCatalogRequest":
{
"startItemRef": 10,
"itemCount": 774
}
};
//Version using callback
cics.invoke(uri,requestData,function(err, data)
{
if (err)
{
... do something with error ....
}
else
{
.... do something with response data
}
});
//Version using promises
cics.invoke(uri,data).then
(
function(response)
{
... do something with response ...
},
function(err)
{
console.log(err);
}
);有三个参数用于调用 CICS 服务:
- URI (字符串)-用于标识目标服务。 它用于匹配 CICS中的 URIMAP ,然后映射到 WEBSERVICE , PIPELINE 并最终将 PROGRAM 作为目标。
- 请求数据 (JavaScript 对象或字符串)-作为请求主体发送到 CICS 服务的数据。 此数据必须为 CICS中的目标服务期望的 JSON 格式。
- 回调函数-当响应准备好由 Node.js 应用程序处理时, CICS 将调用此函数。 如果您正在使用 promise ,那么不会应用此函数。
- 错误对象。 如果请求成功,那么此值为空。 如果失败,那么这是描述错误的 JavaScript 错误对象。
- 响应对象。 这是表示来自 CICS的响应的 JavaScript 对象。
处理错误
当处理来自 Node.js 应用程序的请求时发生错误时, CICS 会创建 JavaScript 错误对象并将其传递到回调函数。 名为
httpCode 的整数值表示具有等效 HTTP 状态的错误。 以下示例是打印到 stderr时的错误:{ Error: CICS error: internal server error
at Error (native)
code: 'ERR_CICS_INTERNAL_ERROR',
httpCode: 500,
response: '{"Fault":{"faultstring":"Failure interacting
with CICS","detail":{"CICSFault": "DFHPI1007 08\\/21\\/2018 09:06:17
IYK2ZKE1 CNJW 00121 JSON to data transformation failed because
of incorrect input (UNDEFINED_ELEMENT foo) for WEBSERVICE
json_inquireCatalogWrapper."}}}' }| 代码 | 消息 | httpCode | 描述 |
|---|---|---|---|
| ERR_CICS_BAD_REQUEST | CICS 错误: 请求错误 | 400 | 从应用程序传递到 CICS 的数据中存在错误。 典型错误包括 URI 格式不正确或无效。 |
| 已禁止ERR_CICS_禁止 | CICS 错误: 已禁止 | 403 | 授权错误。 通常,未授权与 URIMAP 关联的用户标识连接目标 TRANSACTION。 |
| 找不到 ERR_CICS_NOT_FOUND | CICS 错误: 找不到资源 | 404 | 配置错误。 找不到处理中涉及的某个 CICS 资源; 缺少的资源可能是 URIMAP , TRANSACTION 或 PIPELINE 资源。 最常见的问题涉及使用 CICS未知的 URI。 |
| ERR_CICS_INTERNAL_ERROR | CICS 错误: 内部服务器错误 | 500 | 在 CICS中发生问题。 典型问题包括目标服务异常终止或发生数据转换错误。 诊断由 CICS 发出以描述问题,并且可能在错误对象的 "response" 属性中提供了说明消息。 最常见的问题涉及 JSON 请求数据与 CICS中期望的 JSON 格式不匹配。 |
| ERR_CICS_UNAVAILABLE | CICS 错误: 不可用 | 503 | 已禁用 CICS 中的资源。 URIMAP , TRANSACTION 或 PIPELINE 资源当前不可用。 |
单元测试
调用函数支持本地和远程 CICS 调用。 在 CICS 中运行 Node.js 应用程序时,会将请求优化为不使用网络的跨内存系统调用。 在 CICS 外部运行 Node.js 应用程序时,将根据 URI 使用 HTTP 或 HTTPS 将请求发送到 CICS 。 此远程功能仅用于单元测试目的。
使用 ibm-cics-api 模块通过 HTTP连接到 CICS 时,无法设置 HTTP 头 (例如基本认证) 或发送客户机证书。 如果需要执行此操作,请改为使用其他 Node.js 模块。