WSO2 api 上下文变得太大
WSO2 api context growing too big
我的 api 文件大小随着我不断添加越来越多的开关调解器案例而不断增长......在 wso2 中拆分和组织它们的最佳方式是什么。以下是其中一个文件的示例...
问题是案例越来越多,文件变得太大了。
有时 'CASE' 之一可以像 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>
</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": [
""
],
"secondaryValue": [
""
]
},
{
"name":
"applicantworkflow.id",
"value": [
""
],
"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>
最简单的解决方案是使用单独的序列。为每个案例创建一个单独的序列(或者至少是那些变得非常大的案例)。并使用序列中介从开关中介调用序列。
首先将序列保存在您添加到项目的序列文件中:
<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": [
""
],
"secondaryValue": [
""
]
},
{
"name":
"applicantworkflow.id",
"value": [
""
],
"operator": ">"
}
]
..
</sequence>
然后在 switch 语句中使用序列调解器来调用序列。
<switch source="get-property('uri.var.ats_type')">
<case regex="CASE 1">
<sequence key="case1_sequence"/>
</case>
..
</switch>
我的 api 文件大小随着我不断添加越来越多的开关调解器案例而不断增长......在 wso2 中拆分和组织它们的最佳方式是什么。以下是其中一个文件的示例...
问题是案例越来越多,文件变得太大了。
有时 'CASE' 之一可以像 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>
</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": [
""
],
"secondaryValue": [
""
]
},
{
"name":
"applicantworkflow.id",
"value": [
""
],
"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>
最简单的解决方案是使用单独的序列。为每个案例创建一个单独的序列(或者至少是那些变得非常大的案例)。并使用序列中介从开关中介调用序列。
首先将序列保存在您添加到项目的序列文件中:
<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": [
""
],
"secondaryValue": [
""
]
},
{
"name":
"applicantworkflow.id",
"value": [
""
],
"operator": ">"
}
]
..
</sequence>
然后在 switch 语句中使用序列调解器来调用序列。
<switch source="get-property('uri.var.ats_type')">
<case regex="CASE 1">
<sequence key="case1_sequence"/>
</case>
..
</switch>