ESB文档库 ESB文档库
00 概述
01 产品安装指南
02 快速入门指南
03 ESB Studio使用指南
04 企业服务总线使用指南
05 高级配置指南
06 接口服务说明
07 升级&数据迁移指南
08 FAQ
  • 报文转换场景
  • 场景1:请求报文和响应报文字段名称修改
  • 场景2:请求报文和响应报文字段名称增加
  • 场景3:请求报文和响应报文字段名称删除
  • 场景4:请求报文和响应报文字段值修改
  • 场景5:使用报文体中的某个字段值作为源字段的值
  • 场景6:修改字段名,并使用变量值作为新字段的值
  • 场景7:请求头中的字段使用请求体中的某个字段值作为值
  • 场景8:当新增的请求头已存在时,在原先的基础上新增一个value
  • 场景9:请求报文xml转json,响应报文json转xml
  • 场景10:XML格式响应报文转换

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

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

# 报文转换场景

说明:

  1. 如下的示例报文为JSON格式。
  2. 所有示例均使用HTTP穿透发布类型展示。

请求报文:

{"id":"33","name":"名称1","isbn":"isbn1","author":"作者1","price":45.32}

响应报文:

{
  "id": "33",
  "name": "名称1",
  "address": "地址1",
  "price": 45.32,
  "book": {
    "id": "1",
    "name": "书籍1",
    "chapters": {
      "name": "第一章",
      "description": "第一章描述"
    }
  },
  "pics": [{
        "id": "1",
        "name": "图片1"
      },{
      "id": "2",
      "name": "图片2"
    }
  ]
}

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

请求报文转换规则:

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
请求报文转换 报文体 $.id $.newId 否
响应报文转换 报文体 $.name $.newName 否
响应报文转换 报文体 $.book.name $.book.bName 修改的书籍名称 否
响应报文转换 报文体 $.pics[1].name $.pics[1].pName 否

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“接口名称”,即可查看到接口的详细信息。

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“操作”中的“测试”按钮,即可进入测试页面。

在测试页面,在“请求Body”中填写请求报文,点击“测试”按钮,即可查看到转换后的响应报文。

如下图片展示了请求报文转换后的请求报文。

# 场景2:请求报文和响应报文字段名称增加

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
请求报文转换 报文体 $.URL www.baidu.com 否
响应报文转换 报文体 $.desc 描述信息 否
响应报文转换 报文体 $.book.time 2024-01-01 否
响应报文转换 报文体 $.pics[0].title 图片标题1 否

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“接口名称”,即可查看到接口的详细信息。

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“操作”中的“测试”按钮,即可进入测试页面。

在测试页面,在“请求Body”中填写请求报文,点击“测试”按钮,即可查看到转换后的响应报文。

如下图片展示了请求报文转换后的请求报文。

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

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
请求报文转换 报文体 $.author 否
响应报文转换 报文体 $.address 否
响应报文转换 报文体 $.book.name 否
响应报文转换 报文体 $.pics[1].id 否

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击操作栏中的“编辑”按钮,即可查看到接口的详细信息。

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“操作”中的“测试”按钮,即可进入测试页面。

在测试页面,在“请求Body”中填写请求报文,点击“测试”按钮,即可查看到转换后的响应报文。

如下图片展示了请求报文转换后的请求报文。

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

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
请求报文转换 报文体 $.author 作者1-修改 否
响应报文转换 报文体 $.address 地址1-修改 否
响应报文转换 报文体 $.book.name 书籍1-修改 否
响应报文转换 报文体 $.pics[1].name 图片2-修改 否

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击操作栏中的“编辑”按钮,即可查看到接口的详细信息。

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“操作”中的“测试”按钮,即可进入测试页面。

在测试页面,在“请求Body”中填写请求报文,点击“测试”按钮,即可查看到转换后的响应报文。

如下图片展示了请求报文转换后的请求报文。

# 场景5:使用报文体中的某个字段值作为源字段的值

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
请求报文转换 报文体 $.author $.isbn 是
响应报文转换 报文体 $.pics[1].name $.pics[0].name 是

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击操作栏中的“编辑”按钮,即可查看到接口的详细信息。

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“操作”中的“测试”按钮,即可进入测试页面。

在测试页面,在“请求Body”中填写请求报文,点击“测试”按钮,即可查看到转换后的响应报文。

如下图片展示了请求报文转换后的请求报文。

# 场景6:修改字段名,并使用变量值作为新字段的值

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
请求报文转换 报文体 $.author $.newAuthor $.isbn 是
响应报文转换 报文体 $.pics[0].name $.pics[0].newName $.pics[0].name 是

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击操作栏中的“编辑”按钮,即可查看到接口的详细信息。

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“操作”中的“测试”按钮,即可进入测试页面。

在测试页面,在“请求Body”中填写请求报文,点击“测试”按钮,即可查看到转换后的响应报文。

如下图片展示了请求报文转换后的请求报文。

# 场景7:请求头中的字段使用请求体中的某个字段值作为值

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

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击操作栏中的“编辑”按钮,即可查看到接口的详细信息。

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“操作”中的“测试”按钮,即可进入测试页面。

在测试页面,在“请求Body”中填写请求报文,点击“测试”按钮,即可查看到转换后的响应报文。

如下图片展示了请求报文转换后的请求报文。

# 场景8:当新增的请求头已存在时,在原先的基础上新增一个value

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

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击操作栏中的“编辑”按钮,即可查看到接口的详细信息。

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“操作”中的“测试”按钮,即可进入测试页面。

在测试页面,在“请求Body”中填写请求报文,点击“测试”按钮,即可查看到转换后的响应报文。

如下图片展示了请求报文转换后的请求报文。

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

请求报文xml:

<?xml version="1.0" encoding="UTF-8" ?>
<request>
  <id>33</id>
  <name>名称1</name>
  <isbn>isbn1</isbn>
  <author>作者1</author>
  <price>45.32</price>
</request>

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击操作栏中的“编辑”按钮,即可查看到接口的详细信息。

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“操作”中的“测试”按钮,即可进入测试页面。

在测试页面,在“请求Body”中填写请求报文,点击“测试”按钮,即可查看到转换后的响应报文。

如下图片展示了请求报文转换后的请求报文。

# 场景10:XML格式响应报文转换

请求报文示例

<?xml version="1.0" encoding="UTF-8" ?>
<book>
    <id>33</id>
    <name>名称1</name>
    <isbn>isbn1</isbn>
    <author>作者1</author>
    <price>45.32</price>
</book>

响应报文示例

<?xml version="1.0" encoding="UTF-8" ?>
<book>
   <id>33</id>
   <name>名称1</name>
   <address>地址1</address>
   <price>45.32</price>
   <detail>
      <id>1</id>
      <name>书籍1</name>
      <chapters>
         <name>第一章</name>
         <description>第一章描述</description>
      </chapters>
   </detail>
</book>

请求报文转换配置实现【/book/id】字段修改为【/book/new_id】 响应报文转换配置实现【/books/address】的值赋给【/books/price】 响应报文转换配置如下:

转换类型 字段类型 字段名称 新字段名称 字段赋值 Value是否是变量
请求报文转换 报文体 /book/id /book/new_id /book/id 是
响应报文转换 报文体 /books/address /books/price 是

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“接口名称”,即可查看到接口的详细信息。

在"开发门户 > API管理 > 我的发布"页面,选择自己的接口,点击“操作”中的“测试”按钮,即可进入测试页面。

在测试页面,在“请求Body”中填写请求报文,点击“测试”按钮,即可查看到转换后的响应报文。

如下图片展示了请求报文转换后的请求报文。

注意

源xml报文转换json格式方式如下:

1.用在线转换工具将xml格式转为json格式,在线转换工具可参考: https://www.bejson.com/xml2json/index.html

2.复制json格式报文并且修改报文中的【-】为【@】

← 5.5.2 Governor 配置文件 5.7 ESB容器化部署 一 →