WSI2 API-интерфейс становится слишком большим - PullRequest
0 голосов
/ 24 января 2019

У меня есть ситуация, когда размеры моего файла API растут, так как я продолжаю добавлять все больше и больше случаев переключения посредников ... каков наилучший способ разделения и организации их в wso2.Ниже приведен пример примера одного из файлов ...

Проблема в том, что случаи растут, а размер файла становится слишком большим.

Иногда один из «CASE» может быть как 100 строк!Здесь, в примере, я запутываю, используя (...), конечно.

Буду признателен за любую помощь.В идеале есть способ, как мы можем разделить это на файлы меньшего размера.Это удивительно трудно найти после поиска в Google.Я уверен, что я не первый, кто столкнется с этим.

Также вы можете видеть здесь, что функция fixDate (данное_время) повторяется в этом файле, что является лучшим способом включить эту функцию один раз и использовать ее во всем файле.

Спасибо за любые идеи!

Файл называется \ 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": "&gt;"
                            }
                            ] 

                .......

                <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>

1 Ответ

0 голосов
/ 24 января 2019

Самым простым решением для этого является использование отдельных последовательностей. Создайте отдельную последовательность для каждого случая (или, по крайней мере, те, которые становятся действительно большими). А из посредника коммутатора вызовите последовательности, используя посредник последовательности.

Сначала сохраните последовательность в файле последовательности, который вы добавили в свой проект:

<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": "&gt;"
                            }
                            ] 
..
</sequence>

Затем используйте посредник последовательности внутри оператора switch для вызова последовательностей.

<switch source="get-property('uri.var.ats_type')">
  <case regex="CASE 1">
    <sequence key="case1_sequence"/>
  </case>
  ..
</switch>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...