我们已经定义了一个默认的自定义序列来管理不同的网关,如here
所述我们按照doc Creating Global Conection
中的说明安装了序列序列只读取环境中的2个变量,并用于构建端点URL。这是代码:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="WSO2AM--Ext--In">
<property name="uri.var.host" expression="get-property('system','host')" />
<property name="uri.var.port" expression="get-property('system','port')" />
</sequence>
这适用于已发布的API,但如果我们将API降级为原型(直接使用而无需订阅),它就无法正常工作。
我们尝试过:
将其安装为API级别的Message Mediaton策略
在中设置参数
/repository/resources/api_templates/prototype_template.xml
序列
我们测试报告空主机名时的错误(因为它试图读取变量,并且它是空的)
您知道如何在原型环境中设置环境变量吗?
答案 0 :(得分:1)
在&#34; Prototype Endpoint&#34;中部署API时使用velocity_template.xml创建API实现。
此模板为PROTOTYPE和PUBLISHED API生成不同的代码。
我不得不包含APIManagerExtensionHandler(处理自定义扩展序列的处理程序),在velocity模板中添加以下内容(在处理程序添加循环之后)。
patch --forward $WSO2_PATH/$1/repository/resources/api_templates/velocity_template.xml <<EOF
*** velocity_template.xml 2018-06-02 11:04:42.474476581 +0200
--- velocity_template.xml.patched 2018-06-02 11:07:28.495395384 +0200
***************
*** 361,366 ****
--- 361,369 ----
#end
</handler>
#end
+ #if(\$apiStatus == 'PROTOTYPED')
+ <handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler"/>
+ #end
</handlers>
#end
#end
EOF