JSON 格式请求的传输映射
JSON 传输映射窗口允许您定义使用 HTTP 和 TCP 传输发送和接收(可选)的 JSON(JavaScript Object Notation,JavaScript 对象表示法)有效负载
JSON 是一种轻量级的与语言无关的数据交换格式。
您可以指定请求和响应消息的 JSON 格式。
本页还介绍在使用 HTTP 传输时如何指定特定于 HTTP 的配置信息,例如:
- HTTP 方法
- 与 HTTP 请求一起发送的可选 HTTP 查询和标头参数
- HTTP 响应头参数到输出变量的可选映射。
假设
假设下述条件成立:
- 您熟悉 JSON
- 已创建基于消息的传输
流程
要定义 JSON 格式的传输映射,请使用工作台访问节点。
- 导航到 Transport Map(传输映射)窗口,然后选择 New(新建)按钮。
- 在 Transport Name(传输名称)参数中,选择基于消息的传输,例如 JMS、WebSphere MQ、MSMQ、HTTP 或 TCP。您可以使用 Transport Type(传输类型)参数将列出的传输过滤为特定的传输类型。
下例使用的是 HTTP 传输。 - 在 To Enterprise(至企业)选项卡中,选择 JSON 作为 Format(格式)参数。这将更改窗口的 To Enterprise(至企业)部分,以允许定义 JSON 请求。

- 从事务服务器发送到企业应用程序的请求在 Input(输入)选项卡部分和 To Enterprise(至企业)选项卡部分中指定。
要定义请求格式和关联的变量,请执行以下操作:
在 JSON Data(JSON 数据)参数中,输入 JSON 请求消息格式。您可以选择多行输入图标
以显示较大的输入窗口。您可以直接键入 JSON 请求消息的格式,也可以从其他来源复制并粘贴它。选择 OK(确定)按钮以关闭 JSON Data(JSON 数据)窗口。复制的内容将显示在 JSON Data(JSON 数据)参数中。
- 选择 Update(更新)按钮以使用基于示例 JSON 格式的参数填充 To Enterprise(至企业)部分。
- 封闭用 JSON 构造会确定根 JSON 的类型。
- 根数组用参数名“JSON_Array”命名,用完全封闭的方括号 ( [ ] ) 表示。
- 根对象用参数名“JSON_Object”命名,用完全封闭的大括号 ( {} ) 表示。
- 参数名是从 JSON 键名派生的。
- 数组由 Type(类型)列中的 ARRAY(数组)表示。将显示默认值为 1 的相应 Rows In(行输入)参数,可指定数组的大小。输入一个大于 1 的值,表示将在 JSON 请求中发送多行。
标量参数在 Type(类型)列中显示其数据类型。标量参数的数据类型派生自示例 JSON 格式。
类型
描述
STRING(字符串)
带引号的 JSON 值。
BOOLEAN(布尔型)
为 True 或 False 的不带引号的 JSON 值。
DOUBLE(双精度型)
不带引号但带小数点的数字 JSON 值。
INTEGER(整数)
不带引号且不带小数点的数字 JSON 整数值。

注:上例中突出显示的向上和向下箭头,可用于控制显示的窗口部分。
- 选择 Map Parms(映射参数)按钮,以根据窗口的 To Enterprise(至企业)选项卡部分中参数的名称和类型,用变量名填充 Input(输入)选项卡。Rows In(行输入)值用于指定输入变量的最大计数。

- 从企业应用程序发送的预期响应在 Output(输出)选项卡部分和 From Enterprise(从企业)选项卡部分中指定。
要定义响应格式和关联的变量,请执行以下操作:
选择 From Enterprise(从企业)选项卡以定义响应消息格式。选择 JSON 作为 Format(格式)参数。这将更改窗口的 From Enterprise(从企业)部分,以允许定义 JSON 请求。 - 在 JSON Data(JSON 数据)参数中,输入 JSON 响应消息格式。您可以选择多行输入图标
以显示较大的输入窗口。您可以直接键入 JSON 响应消息的格式,也可以从其他来源复制并粘贴它。选择 OK(确定)按钮以关闭 JSON Data(JSON 数据)窗口。复制的内容将显示在 JSON Data(JSON 数据)参数中。
- 选择 Update(更新)按钮以使用基于示例 JSON 格式的参数填充 From Enterprise(从企业)部分。

可以通过更新 Rows In:(行输入:)值来指定数组的大小。在上例中,数组 PRODUCTION_SCHEDULE_LIST 已更改,指示大小值为 3。 - 选择 Map Parms(映射参数)按钮,以根据窗口的 From Enterprise(从企业)选项卡部分中参数的名称和类型,用变量名填充 Output(输出)选项卡。

请注意,Output(输出)选项卡上的数组变量的计数值将根据 Rows In:(行输入:)值进行更新。
配置特定于 HTTP 的信息
如果传输映射正在使用 HTTP 传输,则会显示 Parameters(参数)按钮,该按钮可用于指定特定于 HTTP 的请求和响应处理。
使用此传输映射时,请选择 Parameters(参数)按钮以指定 HTTP 方法、查询、请求头和响应头参数。
| 参数 | 描述 |
|---|---|
| HTTP Method(HTTP 方法) | 选择此传输映射请求发送到 HTTP 服务器时使用的 HTTP 方法。选项包括:GET、POST、PUT 或 DELETE。如果选择 GET,则 To Enterprise(至企业)部分中定义的请求有效负载不会发送到企业应用程序。 |
| URL Stub(URL 存根) | 使用此传输映射将请求发送到 HTTP 服务器时,请指定以下一项以附加到关联的 HTTP 传输中配置的 URL。
|
-
您的商业应用程序可能会要求您在提交 HTTP 请求时指定一个或多个查询参数。为此,选择 Query(查询)选项卡,然后选择 Add(添加)按钮。这将显示 Query parameter definition(查询参数定义)窗口。

参数 描述 Name(名称) 选项为:
通过选择 $CONSTANT 获取的常量查询参数值
使用传输映射发送 HTTP 请求时,从输入变量获得的查询参数值。为此,请从选择列表中选择输入变量。Property(测量值) 输入 HTTP 查询参数的键名(如果其为“名称=值”格式)。否则,您可以将此字段留空,并在输入变量映射的 Name(名称)字段或 Default Value(默认值)字段中将参数值指定为硬编码常量。 Default Value(默认值) 如果在 Name(名称)参数中指定 $CONSTANT,则输入常量文本。如果未在触发器的事务动作中指定输入变量,则此参数还可用于指定查询参数的值。 -
您的商业应用程序可能会要求您在提交 HTTP 请求时指定一个或多个 HTTP 标头参数。为此,选择 Header(标头)选项卡,然后选择 Add(添加)按钮。这将显示 Header parameter definition(标头参数定义)窗口,与 Query parameter(查询参数)窗口类似。

参数 描述 Name(名称) 选项为:
通过选择 $CONSTANT 获取的常量标头参数值
使用映射发送 HTTP 请求时,从输入变量获得的标头参数值。为此,请从选择列表中选择一个 String(字符串)输入变量。Property(测量值) 选项为: 如果仅将 HTTP 标头参数的值部分指定为 $CONSTANT 或输入变量,请输入 HTTP 标头参数的键名
如果要以“键=值”格式将整个标头参数作为 $CONSTANT 或输入变量提供,请将测量值保留为空白或未指定。这使您可以从触发器以“键=值”格式动态指定标头测量值。
Default Value(默认值) 如果在 Name(名称)参数中指定了 $CONSTANT,则输入常量文本。如果未在触发器的事务动作中指定输入变量,则此参数还可用于指定查询参数的值。 -
您的商业应用程序可能会要求您存储一个或多个 HTTP 响应头参数中的内容。为此,请定义将存储此响应头值的输出变量。然后,选择 Response Header(响应头)选项卡,并选择 Add(添加)按钮。这将显示 Header parameter definition(标头参数定义)窗口,与 Query parameter(查询参数)窗口类似。

参数 描述 Name(名称) 使用选择列表选择响应头值将映射到的输出变量。 Property(测量值) 指定将用于标识要映射的特定响应测量值的响应头测量值的键名。如果要映射对应于同一键值的多个响应头值,则需要将输出变量定义为计数大于 1 的数组。例如,使用“Set cookie”响应头键名返回的多个 cookie 值。 Default Value(默认值) 一个可选值,如果在 HTTP 响应头中没有找到相应的响应头键名,则会将该值映射到输出变量。
- 如上例所示,SET_COOKIE_DATA 变量将添加到 Output(输出)选项卡。
- 该变量被选作响应头参数,并与名为 Set-Cookie 的响应头测量值相关联。
- 处理 HTTP 响应后,传输将查找具有键值“Set-Cookie”的 HTTP 响应头,并将值部分映射到 SET_COOKIE_DATA 变量。
在事务动作中引用传输映射
可以使用事务动作在触发器中使用传输映射,如下所示。事务动作的 Input(输入)选项卡显示在传输映射中定义的输入变量。
如果传输映射定义了 JSON 数组,则将有一个以 _rows_in 结尾的输入变量。
可以使用事务动作的 Output(输出)选项卡访问传输映射响应数据,如下所示。如果传输映射在 From Enterprise(从企业)部分定义了 JSON 数组,则将有一个以 _rows_out 结尾的输出变量。此变量将包含响应中返回的行数。下例显示了一个名为 PRODUCTION_SCHEDULE_LIST 的 JSON 数组的元素。触发器开发者可以使用变量 PRODUCTION_SCHEDULE_LIST_rows_out 中返回的行数迭代数组元素。