iPaaS文档库 iPaaS文档库
00 概述
01 产品安装指南
02 快速入门指南
03 Studio使用指南
04 iPaaS使用指南
05 高级配置指南
06 接口服务说明
07 升级&数据迁移指南
08 产品集成指南
09 FAQ
  • 报文转换场景
  • 场景1:修改响应报文字段名称
  • 场景2:新增响应报文字段名称
  • 场景3:删除响应报文字段名称
  • 场景4:修改响应报文字段值
  • 场景5:使用变量赋值-取报文体中的某个字段值作为字段赋值
  • 场景6:修改字段名称,并使用变量取报文体中的某个字段值作为字段赋值
  • 场景7:修改请求头中的字段名称并赋新值
  • 场景8:响应报文json转xml
  • 场景9:请求报文xml转json
  • 场景10:XML格式响应报文转换 -修改字段名称,并使用变量取报文体中的某个字段值作为字段赋值

报文的类型是有很多种的,常用的有定长报文、键值报文、XML报文、JSON报文、二进制报文等,以下就对这几种报文做相应的介绍,并配简单的示例。 开发门户 > API管理 > 我的发布中,如下表格中的发布类型对应的转换类型为支持的可以配置报文转换规则,可以自定义发送业务服务的请求头、请求报文和业务服务返回客户端的响应头、响应报文。

发布类型 请求报文转换 响应报文转换
HTTP穿透 支持 支持
WebService穿透 支持 支持
WebSocket穿透 不支持 不支持
HTTP路由 不支持 不支持
WS转HTTP 支持 支持
HTTP转WS 支持 支持
SAP转HTTP 不支持 不支持
SAP转WS 不支持 不支持
JDBC转HTTP 不支持 不支持
PMQ转HTTP 支持 不支持
Kafka转HTTP 支持 不支持
RabbitMQ转HTTP 支持 不支持
RocketMQ转HTTP 支持 不支持
PMQ转WS 支持 不支持
HTTP转PMQ 支持 不支持
HTTP转Kafka 支持 不支持
HTTP转RabbitMQ 支持 不支持
HTTP转RocketMQ 支持 不支持
PMQ穿透 支持 不支持
GRPC转HTTP 不支持 不支持
Dubbo转HTTP 不支持 不支持
API编排 不支持 不支持

# 报文转换场景

说明:所有示例均使用HTTP穿透发布类型展示。

# 场景1:修改响应报文字段名称

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
响应报文转换 报文体 $.id $.newId 否
响应报文转换 报文体 $.name $.newName 否
响应报文转换 报文体 $.books.1.name $.books.1.newName 否
响应报文转换 报文体 $.books.1.price $.books.1.newPrice 否

未配置报文转换规则,查看响应报文:

{
   "id": "1",
   "name": "名称1",
   "address": "地址1",
   "books": {
      "1": {
         "id": "1",
         "name": "名称1",
         "isbn": "isbn1",
         "author": "作者1",
         "price": 45.32
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   }
}

配置报文转换规则,填写如下内容:

在测试页面,调用接口,可查看到转换后的响应报文,已根据报文转换规则转换:

   {
   "address": "地址1",
   "books": {
      "1": {
         "id": "1",
         "isbn": "isbn1",
         "author": "作者1",
         "newName": "名称1",
         "newPrice": 45.32
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   },
   "newId": "1",
   "newName": "名称1"
}

# 场景2:新增响应报文字段名称

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
响应报文转换 报文体 $.desc 描述信息 否
响应报文转换 报文体 $.books.1.time 出版时间 否

未配置报文转换规则,查看响应报文:

{
   "id": "1",
   "name": "名称1",
   "address": "地址1",
   "books": {
      "1": {
         "id": "1",
         "name": "名称1",
         "isbn": "isbn1",
         "author": "作者1",
         "price": 45.32
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   }
}

配置报文转换规则,填写如下内容:

在测试页面,调用接口,可查看到转换后的响应报文,已根据报文转换规则转换:

   {
   "id": "1",
   "name": "名称1",
   "address": "地址1",
   "books": {
      "1": {
         "id": "1",
         "name": "名称1",
         "isbn": "isbn1",
         "author": "作者1",
         "price": 45.32,
         "time": "出版时间"
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   },
   "desc": "描述信息"
}

# 场景3:删除响应报文字段名称

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
响应报文转换 报文体 $.address 否
响应报文转换 报文体 $.books.1.name 否

未配置报文转换规则,查看响应报文:

{
   "id": "1",
   "name": "名称1",
   "address": "地址1",
   "books": {
      "1": {
         "id": "1",
         "name": "名称1",
         "isbn": "isbn1",
         "author": "作者1",
         "price": 45.32
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   }
}

配置报文转换规则,填写如下内容:

在测试页面,调用接口,可查看到转换后的响应报文,已根据报文转换规则转换:

{
   "id": "1",
   "name": "名称1",
   "books": {
      "1": {
         "id": "1",
         "isbn": "isbn1",
         "author": "作者1",
         "price": 45.32
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   }
}

# 场景4:修改响应报文字段值

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
响应报文转换 报文体 $.address 地址1-修改 否
响应报文转换 报文体 $.book.1.name 名称1-修改 否

未配置报文转换规则,查看响应报文:

{
   "id": "1",
   "name": "名称1",
   "address": "地址1",
   "books": {
      "1": {
         "id": "1",
         "name": "名称1",
         "isbn": "isbn1",
         "author": "作者1",
         "price": 45.32
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   }
}

配置报文转换规则,填写如下内容:

在测试页面,调用接口,可查看到转换后的响应报文,已根据报文转换规则转换:

{
   "id": "1",
   "name": "名称1",
   "address": "地址1-修改",
   "books": {
      "1": {
         "id": "1",
         "name": "名称1-修改",
         "isbn": "isbn1",
         "author": "作者1",
         "price": 45.32
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   }
}

# 场景5:使用变量赋值-取报文体中的某个字段值作为字段赋值

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
响应报文转换 报文体 $.books.1.name $.address 是

未配置报文转换规则,查看响应报文:

{
   "id": "1",
   "name": "名称1",
   "address": "地址1",
   "books": {
      "1": {
         "id": "1",
         "name": "名称1",
         "isbn": "isbn1",
         "author": "作者1",
         "price": 45.32
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   }
}

配置报文转换规则,填写如下内容:

在测试页面,调用接口,可查看到转换后的响应报文,已根据报文转换规则转换:

{
   "id": "1",
   "name": "名称1",
   "address": "地址1",
   "books": {
      "1": {
         "id": "1",
         "name": "地址1",
         "isbn": "isbn1",
         "author": "作者1",
         "price": 45.32
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   }
}

# 场景6:修改字段名称,并使用变量取报文体中的某个字段值作为字段赋值

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
响应报文转换 报文体 $.books.1.name $.books.1.address $.address 是

未配置报文转换规则,查看响应报文:

{
   "id": "1",
   "name": "名称1",
   "address": "地址1",
   "books": {
      "1": {
         "id": "1",
         "name": "名称1",
         "isbn": "isbn1",
         "author": "作者1",
         "price": 45.32
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   }
}

配置报文转换规则,填写如下内容:

在测试页面,调用接口,可查看到转换后的响应报文,已根据报文转换规则转换:

{
   "id": "1",
   "name": "名称1",
   "address": "地址1",
   "books": {
      "1": {
         "id": "1",
         "isbn": "isbn1",
         "author": "作者1",
         "price": 45.32,
         "address": "地址1"
      },
      "2": {
         "id": "2",
         "name": "名称2",
         "isbn": "isbn2",
         "author": "作者2",
         "price": 33.3
      }
   }
}

# 场景7:修改请求头中的字段名称并赋新值

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
请求报文转换 请求头 C-Key C-Key-new 111111 否

未配置报文转换规则,查看响应报文: 说明:演示接口使用打印请求头接口(/users/security/print-head),返回请求报文头数据

{
   "remote.addr": "192.168.16.185:35645",
   "clientid": "Beijing.oa_sys",
   "$http_protocol": "http",
   "host": "192.168.16.167:26112",
   "content-type": "application/json;charset=UTF-8",
   "connection": "keep-alive",
   "c-key": "000000",
   "receiverkey": "/bwzhyw",
   "accept-encoding": "gzip,deflate",
   "user-agent": "Apache-HttpClient/4.5.13 (Java/1.8.0_251)",
   "accept-charset": "utf-8",
   "accept": "*/*"
}

配置报文转换规则,填写如下内容:

在测试页面,调用接口,可查看到转换后的响应报文,已根据报文转换规则转换:

# 场景8:响应报文json转xml

未配置报文转换规则,查看响应报文: 说明:演示接口使用带参map,返回输入的参数(/users/gatewayTest/post),返回请求报文数据

配置报文转换规则JSON转XML,填写如下内容:

在测试页面,调用接口,可查看到转换后的响应报文,已根据报文转换规则转换成XML:

# 场景9:请求报文xml转json

未配置报文转换规则,查看响应报文: 说明:演示接口使用带参map,返回输入的参数(/users/gatewayTest/post),只接收json格式的请求报文,返回请求报文数据,传入xml报文,json解析报错。

配置请求报文转换规则XML转JSON,填写如下内容:

在测试页面,调用接口,可查看到转换后的请求报文,已根据报文转换规则转换成JSON:

# 场景10:XML格式响应报文转换 -修改字段名称,并使用变量取报文体中的某个字段值作为字段赋值

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
响应报文转换 报文体 /Message/body/confKey /Message/body/confKey1 /Message/header/action 是

未配置报文转换规则,查看xml响应报文:

<?xml version="1.0" encoding="UTF-8"?>
<Message>
   <header>
      <action>我是中国人</action>
      <service>meeting</service>
      <type>xml</type>
      <userName>admin</userName>
      <password>admin</password>
      <siteName>box</siteName>
   </header>
   <body>
      <confKey>43283344</confKey>
   </body>
</Message>

配置报文转换规则,填写如下内容:

在测试页面,调用接口,可查看到转换后的响应报文,已根据报文转换规则转换:

← 5.5.2 Portal 配置文件 5.7 iPaaS容器化部署 →