【问题标题】:Replicated API in multiple backends WSO2 API Manager多个后端 WSO2 API 管理器中的复制 API
【发布时间】:2021-05-19 07:53:02
【问题描述】:

我在多个后端复制了一个 API。我没有任何可以区分后端的条件。我尝试使用动态端点并更改消息中介流: https://apim.docs.wso2.com/en/latest/deploy-and-publish/deploy-on-gateway/api-gateway/message-mediation/changing-the-default-mediation-flow-of-api-requests/ 但是,请求之间的唯一区别是后端服务器的 IP 地址:

https://{uri.var.host}/resource

我正在考虑每次创建 API 并更改端点地址,但此解决方案可能很复杂,因为我将在 wso2 api 管理器中多次复制相同的 API(大约 100 次)。还有其他适合我用例的解决方案吗?

【问题讨论】:

    标签: api wso2 wso2-am


    【解决方案1】:

    我们可以利用Dynamic Endpoints 来满足您的要求。但是,要求客户端应用程序需要发送参数或 Header 来过滤和构建中介序列中的 BE 服务器 URL,以在 API Manager 中路由请求。

    如果客户端应用程序可以在调用 API 时发送一个指定唯一(服务器)名称或任何其他值的标头,我们可以使用该键来过滤(或执行 switch case 操作)并在中介序列并将它们路由到相应的 BE 服务。有关详细信息,请参阅以下文档。

    一个示例中介序列将如下所示(客户端应用程序将发送一个名为 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      相关资源
      最近更新 更多