2015-01-14 2 views
0

Я пытаюсь выяснить, как настроить набор обработчиков API по умолчанию, который развертывается в синтаксическом процессоре для реализации API.Пользовательские обработчики API-интерфейса WSO2

Раздел «Обработчики API» в обзоре архитектуры() показывает, как развертывание API приводит к конфигурации Synapse, состоящей из стандартного набора обработчиков. Инструкции по настройке показывают, что для его изменения вы переходите к исходному виду в консоли управления и изменяете содержимое xml.

Это работает, но это будет означать, что для настройки стандартного набора обработчиков (например, для включения дополнительного/настраиваемого шага обеспечения безопасности) мне нужно будет изменить каждый развернутый API вручную в этой конфигурации.

Есть ли место, где я могу настроить API-менеджер для добавления дополнительных пользовательских обработчиков автоматически в любой API, развернутый через него, так же, как он автоматически добавляет обработчики, такие как Политика проверки подлинности, Политика дросселирования и т. Д. Таким образом, я могу обеспечить соблюдение корпоративных стандартов и не требовать, чтобы каждый API был индивидуально отредактирован, а также не издавали издатели API для использования последовательности, чтобы добавить дополнительное поведение.

От проверки кода, то кажется, что этот модуль может быть один здание синапсов конфигурации для API:

.//components/apimgt/org.wso2.carbon.apimgt.impl/1.2.3 /src/main/java/org/wso2/carbon/apimgt/impl/APIProviderImpl.java

Если бы я хотел добавить дополнительную логику - это то, что соответствующий модуль переопределяет, чтобы добавить это поведение, или есть проще, менее навязчивым способом сделать это?

ответ

0
  1. добавить обработчик dropins
  2. AM_HOME/хранилище/ресурсы/api_templates/velocity_template.xml и изменить следующие

#if($handlers.size() > 0) 
     <handlers xmlns="http://ws.apache.org/ns/synapse"> 
      #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 

в


<handlers> 
     **<handler class="com.custom.api.CustomHandler"/>** 
     <handler class="org.wso2.carbon.apimgt.gateway.handlers.throttling.APIThrottleHandler"> 
     <property name="id" value="A"/> 
     <property name="policyKey" value="gov:/apimgt/applicationdata/tiers.xml"/> 
     </handler> 
     <handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageHandler"/> 
     <handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtGoogleAnalyticsTrackingHandler"> 
     <property name="configKey" value="gov:/apimgt/statistics/ga-config.xml"/> 
     </handler> 
     <handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler"/> 
    </handlers> 

это добавит ваш пользовательский обработчик (<handler class="com.custom.api.CustomHandler"/>) для всех API автоматически и другие обработчики по умолчанию, упомянутых выше.

Смежные вопросы