报文的类型是有很多种的,常用的有定长报文、键值报文、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>
配置报文转换规则,填写如下内容:
在测试页面,调用接口,可查看到转换后的响应报文,已根据报文转换规则转换: