继上一篇:
来写下怎么使用filter参数,差别主要在于下面第一个脚本这里,会将传到CPI的filter参数的值,赋值给header上的名叫filterKey的参数,以供后面配置Odata时使用:
import com.sap.gateway.ip.core.customdev.util.Message
import groovy.json.JsonSlurper
import java.util.HashMap;
import org.apache.olingo.odata2.api.uri.UriInfo.*;
def Message processData(Message message) {
//Body
def log = messageLogFactory.getMessageLog(message);
def body = message.getBody(java.lang.String);
def urlParameters = message.getHeaders().get("CamelHttpQuery");
log.addAttachmentAsString("urlParameters Logging", urlParameters, "application/xml");
if(urlParameters != null && !urlParameters.isEmpty()){
message.setHeader("filterKey",urlParameters);
message.setBody(body);
return message;
}else {
message.setHeader("filterKey","");
message.setBody(body);
return message;
}
}
如下图,将上面拿到的值,放到Query Options:
${header.filterKey}&sap-client=${property.sapClientID}
当用postman去调用这个CPI接口的时候:在接口地址后面加入filter参数,就会被带到odata api里:?$filter=(AppID eq 'Refund' and ExecuteDate eq '20221003')
在Odata API里:重定义XXX_GET_ENTITYSET这个方法
刚才传进来的filter的参数,会传到:IT_FILTER_SELECT_OPTIONS, 可以通过下面的方式取到它的值,后面再根据这些值,对数据进行过滤