我们可以利用Dynamic Endpoints来实现您的要求。但是,要求客户端应用程序需要发送参数或标头来过滤和构建中介序列中的 BE 服务器 URL,以在 API 管理器中路由请求。
如果客户端应用程序可以在调用 API 时发送一个指定唯一(服务器)名称或任何其他值的标头,我们可以使用该键来过滤(或执行 switch case 操作)并在中介序列中构造 BE 服务器 URL,并将它们路由到相应的 BE 服务。有关更多信息,请参阅以下文档。
一个示例中介序列将如下所示(客户端应用程序将发送一个名为 as 的标头X-ServerName)
<sequence xmlns="http://ws.apache.org/ns/synapse" name="dynamic-endpoint-seq">
<!-- extract the name from the header -->
<property name="server_name" expression="$trp:X-ServerName" />
<!-- switch case for all applicable names -->
<switch source="$ctx:server_name">
<case regex="server-one">
<property name="service_ep" value="http://server-one-ip/resource"/>
</case>
<case regex="server-two">
<property name="service_ep" value="http://server-two-ip/resource"/>
</case>
<default>
<property name="service_ep" value="http://server-default-ip/resource"/>
</default>
</switch>
<header name="To" expression="get-property('service_ep')"/>
</sequence>