我通过使用 WSO2 API Manager 的自动化流程创建和订阅新的 API出版商 https://docs.wso2.com/display/AM190/Publisher+APIs and Store https://docs.wso2.com/display/AM190/Store+APIs分别是 HTTP API。我有自定义处理程序,然后通过编辑 XML 文件将其映射到我的 API<APIM_HOME>/repository/deployment/server/synapse-configs/default/api
.
有没有办法以编程方式将处理程序映射到新创建的 API,这样我就不必手动编辑 XML?换句话说,API 或其他方法可以查看 API 的当前处理程序,并添加/删除?
我假设您不想为所有 API 手动编辑 API XML 来使用自定义处理程序。相反,您希望在发布 API 时能够自动将处理程序与所有 API 接合。您可以通过编辑 $APIM_HOME/repository/resources/api_templates/velocity_template.xml 来完成此操作。这是模板文件,它决定默认情况下哪些处理程序与 API 交互。在此文件的最后,您将找到处理程序部分。您需要编辑此文件并在其中添加处理程序,如下所示。
## print the handlers
#if($handlers.size() > 0)
<handlers xmlns="http://ws.apache.org/ns/synapse">
<handler class="org.wso2.carbon.samples.handlers.MyCustomHandler"/>
#foreach($handler in $handlers)
<handler xmlns="http://ws.apache.org/ns/synapse" class="$handler.className">
#if($handler.hasProperties())
#set ($map = $handler.getProperties() )
#foreach($property in $map.entrySet())
<property name="$!property.key" value="$!property.value"/>
#end
#end
</handler>
#end
</handlers>
#end
如您所见,我已经添加了我的处理程序org.wso2.carbon.samples.handlers.MyCustomHandler
。这就是你应该做的。如果您现在创建并发布 API,MyCustomHandler 将自动与您的 API 配合。但是,即使您更新velocity_templates.xml,已发布的API也不会产生影响。您需要重新发布它们才能获得效果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)