JSON 格式请求的传输映射

JSON 传输映射窗口允许您定义使用 HTTP 和 TCP 传输发送和接收(可选)的 JSON(JavaScript Object Notation,JavaScript 对象表示法)有效负载

JSON 是一种轻量级的与语言无关的数据交换格式。

您可以指定请求和响应消息的 JSON 格式。

本页还介绍在使用 HTTP 传输时如何指定特定于 HTTP 的配置信息,例如:

  • HTTP 方法
  • 与 HTTP 请求一起发送的可选 HTTP 查询和标头参数
  • HTTP 响应头参数到输出变量的可选映射。

假设

假设下述条件成立:

  • 您熟悉 JSON
  • 已创建基于消息的传输

流程

要定义 JSON 格式的传输映射,请使用工作台访问节点。

  1. 导航到 Transport Map(传输映射)窗口,然后选择 New(新建)按钮。
  2. Transport Name(传输名称)参数中,选择基于消息的传输,例如 JMS、WebSphere MQ、MSMQ、HTTP 或 TCP。您可以使用 Transport Type(传输类型)参数将列出的传输过滤为特定的传输类型。
    下例使用的是 HTTP 传输。
  3. To Enterprise(至企业)选项卡中,选择 JSON 作为 Format(格式)参数。这将更改窗口的 To Enterprise(至企业)部分,以允许定义 JSON 请求。

  4. 从事务服务器发送到企业应用程序的请求在 Input(输入)选项卡部分和 To Enterprise(至企业)选项卡部分中指定。
    要定义请求格式和关联的变量,请执行以下操作:
    JSON Data(JSON 数据)参数中,输入 JSON 请求消息格式。您可以选择多行输入图标 以显示较大的输入窗口。您可以直接键入 JSON 请求消息的格式,也可以从其他来源复制并粘贴它。选择 OK(确定)按钮以关闭 JSON Data(JSON 数据)窗口。复制的内容将显示在 JSON Data(JSON 数据)参数中。

  5. 选择 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 整数值。



      注:上例中突出显示的向上和向下箭头,可用于控制显示的窗口部分。

  6. 选择 Map Parms(映射参数)按钮,以根据窗口的 To Enterprise(至企业)选项卡部分中参数的名称和类型,用变量名填充 Input(输入)选项卡。Rows In(行输入)值用于指定输入变量的最大计数。

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

  9. 选择 Update(更新)按钮以使用基于示例 JSON 格式的参数填充 From Enterprise(从企业)部分。

    可以通过更新 Rows In:(行输入:)值来指定数组的大小。在上例中,数组 PRODUCTION_SCHEDULE_LIST 已更改,指示大小值为 3。
  10. 选择 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。
  • 输入文字数据
  • 使用选择列表并选择一个输入变量。这使您可以在触发器中指定 URL 的结尾部分。

  1. 您的商业应用程序可能会要求您在提交 HTTP 请求时指定一个或多个查询参数。为此,选择 Query(查询)选项卡,然后选择 Add(添加)按钮。这将显示 Query parameter definition(查询参数定义)窗口。

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

    参数 描述
    Name(名称) 选项为:
    通过选择 $CONSTANT 获取的常量标头参数值
    使用映射发送 HTTP 请求时,从输入变量获得的标头参数值。为此,请从选择列表中选择一个 String(字符串)输入变量。
    Property(测量值) 选项为:

    如果仅将 HTTP 标头参数的值部分指定为 $CONSTANT 或输入变量,请输入 HTTP 标头参数的键名

    如果要以“键=值”格式将整个标头参数作为 $CONSTANT 或输入变量提供,请将测量值保留为空白或未指定。这使您可以从触发器以“键=值”格式动态指定标头测量值。

    Default Value(默认值) 如果在 Name(名称)参数中指定了 $CONSTANT,则输入常量文本。如果未在触发器的事务动作中指定输入变量,则此参数还可用于指定查询参数的值。
  3. 您的商业应用程序可能会要求您存储一个或多个 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 中返回的行数迭代数组元素。