Multirequests

Bei einer API fragte ich mich oft “Mache ich viele einzelne Methoden zum Abfragen einzelner Informationen oder verbinde ich verschiedene Bereiche zu einer Abfrage um Requests zu sparen”, denn oft benötigt der Client für eine Ansicht Daten aus mehreren verschiedenen Bereichen.

Hat man die API in viele einzelne Methoden aufgeteilt lässt sich diese einfach erweitern ohne Anpassungen am Client vornehmen zu müssen. Hat allerdings den Nachteil dass man viele Requests benötigt um alle Informationen einer Ansicht zu sammeln.

Deswegen habe ich das Konzept der Multirequests entwickelt, welche das Abfragen verschiedener Methoden in einem HTTP Request erlaubt.

POST Request an den Server (http://2x.dragonjsonserver.de/jsonrpc2.php):

{
    "requests":[
        {"id":1,"method":"Application.ping","params":{}},
        {"id":2,"method":"Application.ping","params":{}}
    ]
}

Response:

{
    "responses":[
        {"result":null,"id":"1","jsonrpc":"2.0"},
        {"result":null,"id":"2","jsonrpc":"2.0"}
    ]
}

Noch einen Schritt weiter geht das Verketten von Abfragen. Erstellt man einen Account, bekommt als Response den Sessionhash und mit diesem lässt sich der erstellte Account auch wieder ausloggen. Dafür wären eigentlich zwei HTTP Requests erforderlich, benötigt die zweite Abfrage doch Daten aus der Response der ersten Abfrage.

Die Multirequests verketten allerdings alle einzelnen Abfragen miteinander und erlauben es somit dass Abfragen Zugriff haben auf alle Responseparameter vorangegangener Abfragen eines HTTP Requests.