Как я могу применить пользовательский обработчик WSO2 только к некоторым API? - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть собственный обработчик, который должен применяться только к набору 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 голосов
/ 10 декабря 2018

Вы можете применять хендеры выборочно на основе свойств API.Посмотрите на мой ответ в Добавление пользовательского обработчика к определенному 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>
...