首页 文章

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

提问于
浏览
2

我有一个自定义处理程序,只应该应用于一组API . 我已经看到编辑 <APIM_HOME>/repository/resources/api_templates/velocity_template.xml 会将更改应用于所有API . 是否有自动方式来分配它,但仅限于API的子集?

UPDATE: 我的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 回答

  • 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>
    

相关问题