如何仅将WSO2自定义处理程序应用于某些API?

时间:2018-12-08 21:15:41

标签: wso2 wso2-am

我有一个自定义处理程序,仅应将其应用于一组API。我已经看到编辑<APIM_HOME>/repository/resources/api_templates/velocity_template.xml会将更改应用于所有API。是否有一种自动分配方式,但仅分配给一部分API?

更新:我的wso2 api管理版本为2.6.0。我正在检查application_type属性,但是它不起作用:

<handlers>
#if($apiObj.additionalProperties.get('application_type') == "whatener")
    <handler class="com.codependent.MyCustomHandler"/>
#end
</handlers>

删除正确打印处理程序的if块。

那么我该如何访问API属性以检查条件?

1 个答案:

答案 0 :(得分:1)

您可以根据API属性有选择地应用处理程序。看看我在Adding custom handler to specific API wso2 API-Manager

中的回答

例如

<Handlers>
    #foreach($handler in $handlers)
        #if(($handler.className ==
"org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler") &&
($apiObj.additionalProperties.get('auth_mode') == "Inhouse"))
            <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>
            <handler class="org.wso2.apim.custom.extensions.CustomAuthHandler"/>
<Handlers>