wso2-处理程序和序列

wso2-处理程序和序列,wso2,wso2-am,Wso2,Wso2 Am,对于WSO2 api管理器,处理程序和序列之间的区别或关系是什么 我想为每个api设置一些要遵循的条件。根据条件,它将检查api请求是否已通过条件。我不确定是否需要使用序列或处理程序。这个答案假设用户通过“序列”表示“中介序列”,它通过APIMAGERExtensionHandler处理程序运行(中介可以是全局的,也可以是每个API,但据我所知,它是在同一个地方执行的) 中介序列和处理程序都是在网关接收到响应或请求后运行的代码扩展。处理程序扩展了org.apache.synapse.rest.A

对于WSO2 api管理器,处理程序和序列之间的区别或关系是什么


我想为每个api设置一些要遵循的条件。根据条件,它将检查api请求是否已通过条件。我不确定是否需要使用序列或处理程序。

这个答案假设用户通过“序列”表示“中介序列”,它通过APIMAGERExtensionHandler处理程序运行(中介可以是全局的,也可以是每个API,但据我所知,它是在同一个地方执行的)

中介序列和处理程序都是在网关接收到响应或请求后运行的代码扩展。处理程序扩展了
org.apache.synapse.rest.AbstractHandler
类,需要实现
AbstractHandler.HandlerRequest
AbstractHandler.HandlerResponse
;中介扩展了
org.apache.synapse.mediators.AbstractMediator
类,需要实现
AbstractMediator.mediate

自定义处理程序和中介序列之间的主要区别在于,使用自定义处理程序需要编写自己的Java类,然后打包和部署处理程序。如果使用预定义的中介组合(由WSO2的ESB提供)可以满足您的需求,那么您可以编写XML序列来定义中介任务,而不需要新代码

根据我的经验,以下是处理程序和中介序列之间的主要区别。应根据您的具体要求决定是否使用其中一种

处理程序

  • 虽然可以通过包含在velocity-template.xml文件中将它们添加到每个API中,但它们严格来说是“每个API”
  • 可以按照与其他处理程序相关的任何顺序执行
  • 除了在API定义序列中包含处理程序外,不需要序列。所有任务都必须包含在Java代码中
调解序列

  • 可以配置为全局或特定于API
  • 可以按照与其他中介序列相关的任何顺序执行,但不能在其他处理程序之前进行中介,除非所有其他中介程序也这样做(除非编写自定义中介处理程序)
  • 允许您在XML树中调用其他预定义的中介来描述中介任务。除非预定义的中介(由WSO2的ESB提供)不能满足您的需求,否则您不必编写任何自定义代码
简言之:如果现有中介的某些组合可以实现您的目标,那么使用中介序列最有意义(即使是“接近但不完全”的情况,编写自定义中介可能比创建一个全新的处理程序更容易)。如果需要在执行所有其他中介之前或之后需要增加自定义级别或需要中介,则应考虑编写处理程序。 编辑:实际回答特定的问题:您可以相当容易地使用中介序列对请求头中的值进行逻辑检查。如果你需要阅读正文内容,这些检查会变得有点困难。。。在这种情况下,自定义处理程序基本上是您唯一的选择