我有一个REST服务,它使用带有警报内容的超媒体。 要使用,客户端必须发送带有此值的Accept标头:
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接受此接受标头并将其转移到端点而不更改它?
我使用webMethods Integration Server 9.7和IS_9.7_Core_Fix19以及Mediator 9.7.0.0017-0490
更新:
查看端点日志后,标题和响应似乎是正确的,但响应会被中介截断。 所有警报内容都从json响应中删除,但响应仍然很好,但是不完整,即使在调试模式下也没有任何Mediator登录。
是调解员问题,轴心问题还是其他问题?
答案 0 :(得分:0)
在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包的config目录中的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消息中有多个根。
所以,除了补丁之外没有解决方案。
修改强>
修补后,问题得到解决