我们可以在WSO2托管API端点URL中映射版本值吗?

时间:2018-12-12 13:18:52

标签: wso2 wso2-am

我正在创建具有某些上下文路径和v1版本的API:

enter image description here

然后,我尝试提供指向后端的沙盒和生产端点。目标是具有以下条件:

PRO: http://localhost:9090/myapi/{version}

SB: http://localhost:8080/myapi/{version}

这就是说我想在后端路径中使用version字段。

enter image description here

但是我遇到以下错误:

  

无效的沙盒端点URI。请参考HTTP端点文档   有关详细信息,请参见WSO2 ESB。

     

无效的生产端点URI。请   有关详细信息,请参阅WSO2 ESB的HTTP端点文档。

有什么办法吗?

更新:

我发现以下文章(https://docs.wso2.com/display/AM260/Map+the+Parameters+of+your+Backend+URLs+with+the+API+Publisher+URLs)解释了如何使用uri.var前缀映射值。所以现在在我的端点中有:

PRO: http://localhost:9090/myapi/{uri.var.version}

SB: http://localhost:8080/myapi/{uri.var.version}

现在的问题是它的值为空。

1 个答案:

答案 0 :(得分:1)

您可能必须创建一个In Flow中介策略才能将API版本获取到端点URL。

例如,您可以创建一个名为“ VersionSequence.xml”的文件,并将以下内容添加到该文件中。此序列介体将允许将REST API版本存储到名为“ uri.var.version”的属性中。

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="VersionSequence" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <property expression="$ctx:SYNAPSE_REST_API_VERSION" name="uri.var.version"/>
    <log level="custom">
        <property expression="get-property('uri.var.version')" name="APIVersion"/>
    </log>
</sequence>

然后,您可以在API管理器中实施该API时,将该中介策略上载到“ 启用消息中介”部分的流中 。之后,您可以将端点设置如下,它将从您在中介流中创建的“ uri.var.version”属性中获取版本。

http://localhost:9090/myapi/{uri.var.version}