繁体   English   中英

API请求输入字段的wso2 API Manager定制验证

[英]wso2 API Manager custom validations for API request input fields

有没有可以帮助我满足以下要求的示例代码。 我正在WSO2 API管理器中发布Rest API,我想拦截每个API的我自己的API输入字段验证,例如输入参数格式和值等。如果验证成功,则API管理器应允许请求调用后端,否则拒绝带有错误消息的请求。

我浏览了一些文档,并且我了解我们可以通过添加中介扩展和自定义处理程序来实现此目的,但是我找不到任何示例代码。

https://docs.wso2.com/display/AM140/Adding+a+Mediation+Extension

如果要编写自定义处理程序,是否应该为每个API编写它,并在API Synapsis文件中进行配置更改? 我想要一个可以为所有API调用的处理程序,并且处理程序将执行适用于该特定API的相应方法。

您可以有一个供所有API使用的自定义处理程序。 您可以使用API管理器的最新版本1.9.1。

您可以通过编写自己的身份验证处理程序类来扩展API管理器以支持任何自定义身份验证机制。 此自定义处理程序必须扩展org.apache.synapse.rest.AbstractHandler类,并实现handleRequest()handleResponse()方法。

您可以在此处找到示例实现。 有关更多详细信息,请参见编写自定义处理程序

如果您需要访问处理程序中的消息正文,则可以使用以下代码块并访问消息正文。

SOAPEnvelope env = messageContext.getEnvelope();
 if (env != null) {
        SOAPBody soapbody = env.getBody();
 }

另外,如果您需要构建消息,则也可以这样做。

将以下依赖项添加到您的处理程序实施项目中

   <dependency>
       <groupId>org.apache.synapse</groupId>
       <artifactId>synapse-nhttp-transport</artifactId>
   </dependency>

然后按以下方式将RelayUtils导入到处理程序中。

import org.apache.synapse.transport.passthru.util.RelayUtils;

然后按以下步骤在消息正文之前构建消息(必要时添加try catch块)。

RelayUtils.buildMessage(((Axis2MessageContext)messageContext).getAxis2MessageContext());

然后,您将可以按以下方式访问邮件正文。

<soapenv:Body><test>sanjeewa</test></soapenv:Body>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM