Frage

Kennt jemand eine Standardmethode zum Stapeln von http-Anforderungen? Bedeutung - Senden mehrerer http-Atomanfragen in einer Roundtrip?

Wir benötigen einen solchen Mechanismus aus Leistungsgründen in unserer REST-API-Implementierung.Diese Art von Mechanismus kann die Anzahl der Roundtrips, die der Client ausführen muss, um die API zu nutzen, drastisch reduzieren.

Vielen Dank im Voraus,

Shay

War es hilfreich?

Lösung

Definieren Sie eine neue Ressource, die die vom Client gewünschten Daten enthält.Siehe http://roy.gbiv.com / untangled / 2008 / rest-apis-muss-hypertext-gesteuert sein # comment-743

Andere Tipps

Es gibt eine offizielle HTTP-Methode, die HTTP-Pipelining heißt. Möglicherweise haben Sie jedoch mehr Probleme mit der Browserseite als mit der Serverseite. Sie können es also möglicherweise verwenden, wenn Sie nur auf der Clientseite über ein hohes Maß an Kontrolle verfügen.

XHR erlaubt nicht immer Pipeling, und AFAIK Sie haben keine Kontrolle über das HTTP-Tunneling mit Javascript. Eine grundlegende Ajax-jQuery-Implementierung kann daher nicht existieren. Mit Comet und dem Bayeux-Protokoll können Sie jedoch einige fortgeschrittene Dinge finden, die bidirektionale Langzeit-TCP-Verbindungen emulieren, bei denen Sie die TCP-Roundtrips sicherlich reduzieren werden.

Ich bin kein Kometenspezialist, aber Sie finden möglicherweise nützliche Informationen zu diesem Comet & HTTP Pipeling Artikel , nach meinem Verständnis ist das meiste davon sehr experimentell, aber zumindest könnten Sie einen schönen Fallback mit 'klassischem' Kometen haben, wenn HTTP Pipelining nicht verfügbar ist. Dies würde möglicherweise einen Retag oder eine neue Frage erfordern.

Das ist ein Problem mit REST.Sie befinden sich auf Unternehmensebene.Die REST-Idee besteht darin, dass jede URL eine Ressource eindeutig identifiziert. Natürlich können Sie aggregierte Ressourcen einführen.Zum Beispiel www.yoursite.com/customerA?include=Orders,Faults,Incidents Dies gibt das XML für CustomerA zurück, gibt aber auch die Bestellungen, Fehler und Vorfälle des Kunden als eingebettete Sammlung zurück.

Wenn die Verwendung dedizierter 'aggregierter' Ressourcen wie oben beschrieben für Sie nicht funktioniert, können Sie auch versuchen, Darstellungen weniger flüchtiger Ressourcen in Caches zu verschieben, um die Belastung Ihres Systems zu verringern.Beispiel: HTML-Seiten im "menschlichen" Web enthalten häufig Unmengen von Bildern, und die vielen Unteranforderungen sind dort nicht von Belang.

Wenn Sie sich REST-basierte Services oder eine API ansehen.Hier gibt es einige Anfänge eines Standards http:// www.odata.org/documentation/odata-version-3-0/batch-processing/

Und eine Implementierung von Google hier https:// cloud.google.com/storage/docs/json_api/v1/how-tos/batch

Sie erstellen Stapelanforderungen, indem Sie new_batch_http_request () für Ihr Serviceobjekt aufrufen, das ein BatchHttpRequest-Objekt zurückgibt, und dann add () für jede Anforderung aufrufen, die Sie ausführen möchten. Sie können bei jeder Anforderung, die mit der Antwort auf diese Anforderung aufgerufen wird, einen Rückruf übergeben. Die Rückruffunktionsargumente sind eine eindeutige Anforderungskennung für jeden API-Aufruf, ein Antwortobjekt, das die API-Aufrufantwort enthält, und ein Ausnahmeobjekt, das auf eine vom API-Aufruf ausgelöste Ausnahme festgelegt werden kann. Nachdem Sie die Anforderungen hinzugefügt haben, rufen Sie execute () auf, um die Anforderungen zu stellen. Die Funktion execute () wird blockiert, bis alle Rückrufe aufgerufen wurden.

Referenzen:

Sie können dies auch https://developers.google.com/api-client versuchen

Bibliothek / Python / Guide / Batch

https://cloud.google.com/storage/ docs / json_api / v1 / how-tos / batch

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top