2016-11-10 3 views
0

Ich bin eine API-Operation zum Abrufen einer Liste von Objekten aufrufen, und dann, für jedes Objekt in dieser Liste, ich eine andere API-Operation aufrufen, um zusätzliche Details des Objekts abrufen und diese Details in die hinzufügen Objekt. Das Ziel ist, eine Liste von Objekten mit allen Eigenschaften (oder Details) zurückzugeben, die ich brauche. Im folgenden Beispiel erhält der Aufruf /allObjects eine Liste aller Objekte mit 2 Eigenschaften - id und k1. Aber meine Anwendung benötigt 3 Eigenschaften, id, k1 und k4. Also rufe ich eine andere API-Methode auf, um detaillierte Informationen für jedes Objekt zu erhalten, einschließlich der Eigenschaft k4. Ich kopiere diese detaillierte Eigenschaft in das ursprüngliche Ergebnismengenobjekt und gebe das "angereicherte" Ergebnis zurück. Aber die Latenzkosten können hoch sein. Was ist der beste Weg, dies zu erreichen, ohne die Anwendung zu sehr zu verlangsamen? In der realen Welt habe ich es mit 500-2000 Objekten zu tun.Kombinieren der Ergebnisse mehrerer API-Aufrufe

GET /allObjects yields JSON results => 
{ 
    "data" : [ 
    { 
     "id" : "123", 
     "k1" : "v1" 
    }, { 
     "id" : "456", 
     "k1" : "v1" 
    } 
    ] 
} 

for (obj in results.data) { 
    GET /object/{obj.id} yields JSON result => 
    { 
    "data" : { 
     "id" : "123", 
     "k1" : "v1", 
     "k2" : "v2", 
     "k3" : "v3", 
     "k4" : "v4" 
    } 
    } 
    // Add k4 property to original result-set object, and assign 
    // it the value of the k4 property in the individual result object. 
    obj.k4 = result.data.k4; 
} 

return results.data; 

Antwort

1

Ihre Anforderung ist so, dass, Sie haben keine andere Wahl, als für ein Mash-up zu gehen (wenn Sie die API-Entwickler überzeugen können die beiden API zu kombinieren).

Sie könnten jedoch entscheiden, einen Mashup Service mit einer mit geringer Latenz zwischen Ihrer Anwendung aus der Mashup-Logik zu abstrahieren stehen in Kosten zu machen, umgekehrt, können Sie entscheiden, eine Sprache zu verwenden, die speziell für diese gemacht wird Art der Arbeit, um Ihre Anwendung zu programmieren. Beide Optionen können mit Ballerina aufgenommen werden, ich habe einen Beitrag geschrieben here zeigt, wie einfach es ist, das zu tun.

Verwandte Themen