JSON 域中的 JSONP 支持

JSONP (带有填充的JavaScript 对象表示法) 是 JavaScript 对象表示法 (JSON) 格式的扩展。

IBM® App Connect Enterprise 提供对 JSONP 服务的支持。 JSONP 服务或远程 JSON 服务是一个 Web Service ,用于返回使用用户定义的 JavaScript 函数调用填充的 JSON 数据。 JSONP 响应消息可以解释为可执行文件,因此该功能可用于创建跨域函数调用。

例如:
http://brokerhost:7080/flowUrlPathSuffix?jsonp=scriptFn
此 URL 包含查询字符串,其中:
  • jsonp 告知 JSONP 服务来自该 URL 的任何响应都必须作为 JSONP 消息返回
  • scriptFn 是客户机端可执行文件函数的名称
因此到该 URL 的响应为 JSONP 格式:
scriptFn(response)

JSON 消息树提供顶级 Padding 元素,JSON 解析器将客户机端 JSONP 函数的名称放入该元素中。 类似地,如果树中有顶级元素 Padding,那么 JSON 序列化器会填充 JSON 消息。

有关 JSON 的更多信息,请参阅 JSON 解析器和域

有关如何使用 IBM App Connect Enterprise 来提供 JSONP 服务的信息,请参阅 提供 JSONP 服务

有关如何使用 IBM App Connect Enterprise 来使用 JSONP 服务响应的信息,请参阅 使用 JSONP 服务响应

JSONP 消息示例

以下示例显示简单 JSONP 消息:

scriptFn (
    {
        "name" : "John Doe",
        "age" : -1.0,
        "known" : false,
        "address" : { "street" : null,
                      "city" : "unknown" },
        "belongings" : ["item1", "item2", "item3"]
    }
)

此 JSONP 输入生成以下集成节点逻辑消息树:

  (0x01000000:Object):JSON            = ( ['json' : 0xd55fc8]
    (0x03000000:NameValue):Padding = 'scriptFn' (CHARACTER)
    (0x01000000:Object   ):Data    = (
      (0x03000000:NameValue):name       = 'John Doe' (CHARACTER)
      (0x03000000:NameValue):age        = -1E+0 (FLOAT)
      (0x03000000:NameValue):known      = FALSE (BOOLEAN)
      (0x01000000:Object   ):address    = (
        (0x03000000:NameValue):street = NULL
        (0x03000000:NameValue):city   = 'unknown' (CHARACTER)
      )
      (0x01001000:Array    ):belongings = (
        (0x03000000:NameValue):Item = 'item1' (CHARACTER)
        (0x03000000:NameValue):Item = 'item2' (CHARACTER)
        (0x03000000:NameValue):Item = 'item3' (CHARACTER)
      )
    )
  )