【发布时间】:2016-05-17 04:06:43
【问题描述】:
对于WSO2 api manager,handlers和sequence有什么区别或关系。
我想为每个 api 设置一些条件。根据条件,它将检查 api 请求是否通过条件。我不确定是否需要使用序列或处理程序。
【问题讨论】:
对于WSO2 api manager,handlers和sequence有什么区别或关系。
我想为每个 api 设置一些条件。根据条件,它将检查 api 请求是否通过条件。我不确定是否需要使用序列或处理程序。
【问题讨论】:
此答案假定用户通过“序列”表示“中介序列”,它们通过 APIManagerExtensionHandler 处理程序运行(中介可以是全局的或每个 API,但据我所知,它是在同一个地方执行的)。
中介序列和处理程序都是在网关收到响应或请求后运行的代码扩展。处理程序扩展org.apache.synapse.rest.AbstractHandler类,需要实现AbstractHandler.handleRequest和AbstractHandler.handleResponse;中介扩展org.apache.synapse.mediators.AbstractMediator 类并要求实现AbstractMediator.mediate。
自定义处理程序和中介序列之间的主要区别在于,使用自定义处理程序需要您编写自己的 Java 类,然后打包和部署处理程序。如果您的需求可以通过预定义的中介(由 WSO2 的 ESB 提供)的组合来满足,那么您可以编写一个 XML 序列来定义中介任务,而无需新代码。
根据我的经验,以下是处理程序和中介序列之间的主要区别。应根据您的具体要求确定使用其中一种。
处理程序
中介序列
简而言之:如果现有调解器的某种组合可以实现您的目标,那么使用调解序列最有意义(即使是“接近但不完全”的情况,编写自定义调解器比完全创建调解器更容易新的处理程序)。如果您需要更高级别的自定义或需要在执行所有其他中介之前或之后进行中介,您应该考虑编写一个处理程序。
编辑:实际回答具体问题:您可以使用中介序列相当容易地对请求标头中的值进行逻辑检查。如果您需要阅读正文内容,这些检查会变得更加困难......在这种情况下,自定义处理程序基本上是您唯一的选择。
【讨论】: