Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#5

AW: REST-API längeres Warten auf Antwort

  Alt 27. Sep 2023, 15:03
Neben Polling und aktiver Benachrichtigung über Websockets gibt es auch noch sogenannte Webhooks.

Diese würde ich grundsätzlich bevorzugen, denn sie benötigen auf beiden Seiten keine permanenten Ressourcen und sind stateless, und lassen sich somit deutlich einfacher skalieren.

Da gibt es 2 generelle Ansätze:
Der Client-Dienst schickt dem Server-Dienst die Aufgabe mit einer Id (z.B. xyz), und bekommt sofort die Antwort dass die Anfrage angenommen wurde.
Der Server-Dienst verarbeitet die Anfrage.
Ist er fertig, ruft er eine ihm bekannte URL auf dem Client-Dienst auf und sagt diesem somit aktiv, das Job xyz fertig ist. Er schickt nicht das Ergebnis mit, sondern das ist nur ein ganz kurzes "Hey, xyz ist fertig!"
Der Client-Dienst kann jetzt das Ergebnis abrufen und damit weiter machen.

Der zweite Ansatz ist so ähnlich, nur kennt der Server-Dienst die Url des Client-Dienstes nicht.
Der Client-Dienst gibt also beim Aufruf nicht nur die Job-Id mit, sondern die komplette Url, die der Server-Dienst aufrufen soll. z.B. "https://{ip}:{port}/webhooks/job-fertig/xyz" <- da steckt die job-id xyz auch drin
Nach dem Abarbeiten ruft der Server-Dienst also einfach immer die übergebene Url auf, und meldet somit das er fertig ist, ohne dass er die Adresse oder gar eine Id vorher kennen müsste. Der Client kann also komplett selber bestimmen, wie er benachrichtigt werden will und es sind keine Änderungen am Server-Dienst nötig, wenn der Client irgendwann mal z.B. einen weiteren Parameter möchte.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat