2016-11-01 4 views
1

Ich habe eine api in WSO2 ESB festgelegt und es ruft zwei internen APIs durch Recepient Liste und welche vorbei json Antworten wie folgt. (Beispielantworten)Aggregate mehrere json Reaktionen mit Aggregat Mediators in WSO2 esb

{ 
    "name": "api1", 
    "response": "success", 
    "status": "1" 
} 

und

Ich muss die Antwort übergeben, indem ich diese beiden Antworten als eine einzige Antwort aggregiere. Ich bin über Payloadfactory rot und in der Lage, aggregierte Antwort zu konstruieren. Aber ich brauche zu aggregieren unabhängig von den Antworten von diesem 2 apis kommen und erzeugt Antwort als ein einziges Objekt json und vergehen beiden Antworten unter anderem als

folge
{ 
    "response1": { 
     "name": "api1", 
     "response": "success", 
     "status": "1" 
    }, 
    "response2": { 
     "name": "api2", 
     "response": "unsuccess", 
     "status": "2" 
    } 
} 

so, wie ein mit WSO2ESB erreichen kann. Ich verwende die neueste Version von ESB.

Antwort

0

Nun, dies ist, wo Anreicher Mediator praktisch wird. Bitte versuchen Sie es. Ich habe das nicht getestet, da ich jetzt keine WSO2-bezogenen Sachen mache. Aber Ihr Feedback ist herzlich willkommen. Der Pseudocode ist in etwa so.

<call> 
    <endpoint> 
     <http method="GET" uri-template="http://www.mocky.io/v2/some-ep"/> 
    </endpoint> 
</call> 
<enrich> 
    <source type="body" clone="true"/> 
    <target type="property" property="first-json"/> 
</enrich> 
    <call> 
    <endpoint> 
     <http method="GET" uri-template="http://www.mocky.io/v2/another-ep"/> 
    </endpoint> 
</call> 
<enrich> 
    <source type="property" property="first-json" clone="true"/> 
    <target action="sibling" xpath="//"/> 
</enrich> 
</respond> 
+0

ok. Danke für die Antwort. Ich werde versuchen, –

+0

Eine weitere Sache, Ihre Payload-Struktur ist falsch. Es sollte eine Sammlung in JSON sein und sollte wie {{{Name: Marc, Antwort: resp1, Status: ...}, {...}]} –

+0

Ich habe einen kleinen Teil in der Nutzlast und Ihre Probe verpasst json ist auch nicht korrekt, weil es kein Wurzelelement hat. Übrigens danke. { \t "Antwort": [{ \t \t "name": "Marc", \t \t "Antwort": "resp1", \t \t "Status": "1" \t}, { \t \t " name ": "Marc", \t \t "Antwort": "resp1", \t \t "Status": "1". \t}] } –