Frage
Mit Web-Service ist es eine gute Praxis zu Charge mehr Service betrachtet ruft in eine Nachricht, die eine Anzahl von entfernten Anrufen zu reduzieren. Gibt es eine Möglichkeit, dies mit RESTful Service zu tun?
Lösung
Ich sehe nicht, wie batching Anfragen keinen Sinn in REST macht. Da die URL in einem REST-basierten Dienst den Betrieb darstellt, auszuführen und die Daten, auf die sich auszuführen, Stapelanforderungen machen würde das konzeptionelle Modell ernst brechen.
Eine Ausnahme wäre, wenn Sie auf die gleichen Daten mehrmals die gleiche Operation durchführt wurden. In diesem Fall können Sie passieren entweder in (für PUT oder POST funktioniert nur wirklich aber dies würde) mehr Werte für einen Anforderungsparameter oder kodieren diese Wiederholung im Körper. Der Gliffy REST API unterstützt das Hinzufügen von mehreren Benutzern auf den gleichen Ordner über
POST /folders/ROOT/the/folder/name/users?userId=56&userId=87&userId=45
die im Wesentlichen:
PUT /folders/ROOT/the/folder/name/users/56
PUT /folders/ROOT/the/folder/name/users/87
PUT /folders/ROOT/the/folder/name/users/45
Wie der andere Kommentator wies darauf hin, Paging-Ergebnisse aus einem GET können über Anforderungsparameter erfolgen:
GET /some/list/of/resources?startIndex=10&pageSize=50
, wenn der REST-Service unterstützt wird.
Andere Tipps
Wenn Sie wirklich zu Charge benötigen, Http 1.1 unterstützt ein Konzept HTTP Pipelining genannt, die Sie mehrere Anfragen senden können, bevor sie eine Antwort zu erhalten. Check it out hier
Ich bin mit Darrel Miller. HTTP unterstützt bereits HTTP Pipelining, und HTTP unterstützt am Leben erhalten lassen Sie mehr HTTP-Operationen gleichzeitig in der gleichen Steckdose Strom für die Antworten warten, um zu vermeiden, dass vor neue Anforderungen Streaming an den Server etc.
So mit HTTP-Pipelining und am Leben erhalten Sie die Wirkung der Dosierung erhalten, während die gleiche zugrunde liegende REST-API - so gibt es in der Regel keine Notwendigkeit für einen anderen REST-API für Ihren Service
Das Team mit Astoria nutzte mehrteiligen Mime einen Stapel von Anrufen zu senden. Anders als bei Pipelining als mehrteilige Nachricht kann die Absicht einer atomaren Operation abzuleiten. Scheint eher elegant.
Natürlich gibt es eine Möglichkeit, aber es wäre serverseitige Unterstützung benötigen. Es gibt keine magische Einheitsgröße Methodik passt, die ich kenne.