如何强制 Mediator 接受警笛内容
How to force Mediator to accept siren content
我有一个 REST 服务,它使用带有警笛内容的超媒体。
为了可用,客户端必须发送具有此值的接受 header :
application/vnd.siren+json
但是当我通过 Centrasite 将此服务虚拟化到 Mediator 包时,请求被拒绝。
当我使用仅接受 application/json
请求的接受时,但内容没有超媒体链接,因此无法使用。
我已经像这样更改了 Mediator 包资源中的 content-types.xml
文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<content-types xmlns="http://contentTypes.mediator.softwareag">
<!-- Please enter the custom content-types
<content-type type="xml">
<name></name>
</content-type>
-->
<content-type type="json">
<name>application/vnd.siren+json</name>
</content-type>
</content-types>
有了这个,现在接受带有警报器的请求,但没有超媒体内容(与 application/json 一样)
我如何强制 Mediator 接受此接受 header 并将其传输到端点而不更改它?
我使用带有 IS_9.7_Core_Fix19 的 webMethods Integration Server 9.7 和 Mediator 9.7.0.0017-0490
更新:
查看端点日志后,header 和响应似乎是正确的,但响应被中介截断了。
json 响应中删除了所有警笛内容,但响应仍然格式正确,但不完整,即使在调试模式下也没有任何登录 Mediator。
是 Mediator 问题、轴一问题还是其他问题?
在 Empower 知识库中搜索后,我发现了这个:
If the Content-Type header field specifies a content type for which no content
handler has been registered, Integration Server uses the default content
handler (ContentHandler_Default), which treats the content as text/html.
这解释了为什么我必须更改 WmMediator 包的配置目录中的 content-types.xml
文件。
其次,我发现了这个问题:
SMGME-6616 (Fix 18)
MultiRoot node elements of JSON type are not passed for a custom content type.
When a custom content type for JSON is executed and a multi root node
element is passed as a request for virtual rest API, then only the first
node is passed to the backend native API. This issue is resolved.
这似乎很好地解释了为什么我没有回复的全部内容,因为使用 Siren 超媒体格式,我们在 json 消息中有多个根。
所以,除了打补丁没有解决办法。
编辑:
打补丁后问题解决
我有一个 REST 服务,它使用带有警笛内容的超媒体。 为了可用,客户端必须发送具有此值的接受 header :
application/vnd.siren+json
但是当我通过 Centrasite 将此服务虚拟化到 Mediator 包时,请求被拒绝。
当我使用仅接受 application/json
请求的接受时,但内容没有超媒体链接,因此无法使用。
我已经像这样更改了 Mediator 包资源中的 content-types.xml
文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<content-types xmlns="http://contentTypes.mediator.softwareag">
<!-- Please enter the custom content-types
<content-type type="xml">
<name></name>
</content-type>
-->
<content-type type="json">
<name>application/vnd.siren+json</name>
</content-type>
</content-types>
有了这个,现在接受带有警报器的请求,但没有超媒体内容(与 application/json 一样)
我如何强制 Mediator 接受此接受 header 并将其传输到端点而不更改它?
我使用带有 IS_9.7_Core_Fix19 的 webMethods Integration Server 9.7 和 Mediator 9.7.0.0017-0490
更新:
查看端点日志后,header 和响应似乎是正确的,但响应被中介截断了。 json 响应中删除了所有警笛内容,但响应仍然格式正确,但不完整,即使在调试模式下也没有任何登录 Mediator。
是 Mediator 问题、轴一问题还是其他问题?
在 Empower 知识库中搜索后,我发现了这个:
If the Content-Type header field specifies a content type for which no content
handler has been registered, Integration Server uses the default content
handler (ContentHandler_Default), which treats the content as text/html.
这解释了为什么我必须更改 WmMediator 包的配置目录中的 content-types.xml
文件。
其次,我发现了这个问题:
SMGME-6616 (Fix 18)
MultiRoot node elements of JSON type are not passed for a custom content type.
When a custom content type for JSON is executed and a multi root node
element is passed as a request for virtual rest API, then only the first
node is passed to the backend native API. This issue is resolved.
这似乎很好地解释了为什么我没有回复的全部内容,因为使用 Siren 超媒体格式,我们在 json 消息中有多个根。
所以,除了打补丁没有解决办法。
编辑:
打补丁后问题解决