wso2 API 经理自定义验证 API 请求输入字段
wso2 API Manager custom validations for API request input fields
是否有任何示例代码可以帮助满足我的以下要求。
我正在 WSO2 API 管理器中发布 Rest APIs,我想为每个 API 拦截我自己的 API 输入字段验证,例如输入参数格式和值等。如果验证成功然后 API 管理器应该允许请求调用后端,否则拒绝带有错误消息的请求。
我浏览了一些文档,我知道我们可以通过添加中介扩展和自定义处理程序来实现这一点,但是我找不到任何示例代码。
https://docs.wso2.com/display/AM140/Adding+a+Mediation+Extension
如果我们正在编写自定义处理程序,我们是否应该为每个 API 编写它并在 API Synapsis 文件中进行配置更改?
我想要一个将为所有 API 调用的处理程序,并且处理程序将执行适用于该特定 API 的相应方法。
您可以拥有一个自定义处理程序,供所有 API 使用。您可以使用最新版本的API Manager which is 1.9.1
您可以通过编写自己的身份验证处理程序 class 来扩展 API 管理器以支持任何自定义身份验证机制。此自定义处理程序必须扩展 org.apache.synapse.rest.AbstractHandler
class 并实现 handleRequest()
和 handleResponse()
方法。
您可以找到示例实现 here. For more details, please have a look on Writing Custom Handlers
如果您需要在处理程序中访问消息正文,那么您可以使用以下代码块并访问消息正文。
SOAPEnvelope env = messageContext.getEnvelope();
if (env != null) {
SOAPBody soapbody = env.getBody();
}
此外,如果您需要构建消息,那么您也可以这样做。
将以下依赖项添加到您的处理程序实现项目
<dependency>
<groupId>org.apache.synapse</groupId>
<artifactId>synapse-nhttp-transport</artifactId>
</dependency>
然后如下导入RelayUtils到handler
import org.apache.synapse.transport.passthru.util.RelayUtils;
然后在处理消息体之前构建消息如下(需要时添加try catch块)。
RelayUtils.buildMessage(((Axis2MessageContext)messageContext).getAxis2MessageContext());
然后您将能够按如下方式访问邮件正文。
<soapenv:Body><test>sanjeewa</test></soapenv:Body>
是否有任何示例代码可以帮助满足我的以下要求。 我正在 WSO2 API 管理器中发布 Rest APIs,我想为每个 API 拦截我自己的 API 输入字段验证,例如输入参数格式和值等。如果验证成功然后 API 管理器应该允许请求调用后端,否则拒绝带有错误消息的请求。
我浏览了一些文档,我知道我们可以通过添加中介扩展和自定义处理程序来实现这一点,但是我找不到任何示例代码。
https://docs.wso2.com/display/AM140/Adding+a+Mediation+Extension
如果我们正在编写自定义处理程序,我们是否应该为每个 API 编写它并在 API Synapsis 文件中进行配置更改? 我想要一个将为所有 API 调用的处理程序,并且处理程序将执行适用于该特定 API 的相应方法。
您可以拥有一个自定义处理程序,供所有 API 使用。您可以使用最新版本的API Manager which is 1.9.1
您可以通过编写自己的身份验证处理程序 class 来扩展 API 管理器以支持任何自定义身份验证机制。此自定义处理程序必须扩展 org.apache.synapse.rest.AbstractHandler
class 并实现 handleRequest()
和 handleResponse()
方法。
您可以找到示例实现 here. For more details, please have a look on Writing Custom Handlers
如果您需要在处理程序中访问消息正文,那么您可以使用以下代码块并访问消息正文。
SOAPEnvelope env = messageContext.getEnvelope();
if (env != null) {
SOAPBody soapbody = env.getBody();
}
此外,如果您需要构建消息,那么您也可以这样做。
将以下依赖项添加到您的处理程序实现项目
<dependency>
<groupId>org.apache.synapse</groupId>
<artifactId>synapse-nhttp-transport</artifactId>
</dependency>
然后如下导入RelayUtils到handler
import org.apache.synapse.transport.passthru.util.RelayUtils;
然后在处理消息体之前构建消息如下(需要时添加try catch块)。
RelayUtils.buildMessage(((Axis2MessageContext)messageContext).getAxis2MessageContext());
然后您将能够按如下方式访问邮件正文。
<soapenv:Body><test>sanjeewa</test></soapenv:Body>