当我不断添加越来越多的switch中介程序案例时,我的api文件大小会不断增长……在wso2中拆分和组织它们的最佳方法是什么?以下是其中一个文件的示例示例...
问题在于案件越来越多,文件大小变得太大。
有时“案例”之一可能像100行!在此示例中,我当然使用(...)进行了混淆。
我将不胜感激。理想情况下,有一种方法可以将其分成较小的文件大小。谷歌搜索后很难找到它。我很确定我不是第一个遇到这个问题的人。
您还可以在这里看到该文件中正在重复使用fixDate(given_time)函数,最好是一次包含此函数并在整个文件中使用它的最佳方法。
感谢您的见解!
该文件为\ synapse-config \ api \ Applications.xml ...,并且文件大小正在不断增加...
<?xml version="1.0" encoding="UTF-8"?>
<api context="/applications" name="Applications" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="GET">
<inSequence>
<property name="DISABLE_CHUNKING" scope="axis2" type="STRING" value="true"/>
....
...
...
<property expression="$url:page" name="uri.var.page" scope="default" type="STRING"/>
<script language="js"><![CDATA[
...
></script>
<payloadFactory description="PayloadFactory" media-type="json">
<format>
$1
</format>
<args>
<arg evaluator="xml" expression="get-property('uri.var.ats_credentials')"/>
</args>
</payloadFactory>
<property expression="json-eval($.auth_code)" name="uri.var.auth_code" scope="default" type="STRING"/>
<log level="full">
</log>
<switch source="get-property('uri.var.ats_type')">
<case regex="CASE 1">
<payloadFactory media-type="json">
<format>{
"filters": [
{
"name": "applicantworkflow.updateddate",
"value": [
"$1"
],
"secondaryValue": [
"$2"
]
},
{
"name":
"applicantworkflow.id",
"value": [
"$3"
],
"operator": ">"
}
]
.......
<case regex="CASE 2">
<script language="js"><![CDATA[function fixDate(given_time) {
......
<case regex="CASE 3">
<script language="js"><![CDATA[function fixDate(given_time) {
......
<case regex="CASE 4">
<script language="js"><![CDATA[function fixDate(given_time) {
......
//FILE SIZE KEEPS GROWING..... with different cases......
<default>
<log description="Fault Log" level="custom">
<property expression="fn:concat('Invalid ATS - ', get-property('uri.var.ats_type'))" name="message"/>
</log>
<payloadFactory media-type="json">
<format>{
"Error": "Invalid ATS"
}
</format>
<args/>
</payloadFactory>
<respond description="Respond"/>
</default>
</switch>
</inSequence>
<outSequence>
<send/>
</outSequence>
<faultSequence>
<send/>
</faultSequence>
</resource>
<handlers>
<handler class="com.tti.security.OpenSourceAuthHandler"/>
</handlers>
</api>
答案 0 :(得分:0)
最简单的解决方案是使用单独的序列。为每种情况(或至少变得非常大的情况)创建一个单独的序列。然后从切换介体使用序列介体调用序列。
首先将序列保存在添加到项目中的序列文件中:
<sequence name="case1_sequence" xmlns="http://ws.apache.org/ns/synapse">
<case regex="CASE 1">
<payloadFactory media-type="json">
<format>{
"filters": [
{
"name": "applicantworkflow.updateddate",
"value": [
"$1"
],
"secondaryValue": [
"$2"
]
},
{
"name":
"applicantworkflow.id",
"value": [
"$3"
],
"operator": ">"
}
]
..
</sequence>
然后在switch语句中使用序列介体调用序列。
<switch source="get-property('uri.var.ats_type')">
<case regex="CASE 1">
<sequence key="case1_sequence"/>
</case>
..
</switch>