HTTP Frage: Bekommt der Server mit wenn der Client


#1

Hallo, folgendes Szenario.
TCP IP - HTTP

Der Client macht eine REST API Anfrage an der Server um bestimmte Daten zu bekommen.

Der Server sendet diese Daten, nun gibt es Verbindungsprobleme oder der Client reagiert nicht mehr.

Bekommt das der Server mit? Ist der CODE 200 beiderseitig? Ich weis das ich auf der Client Seite mit hilfe von Code 200 prüfen kann ob alles angekommen ist, geht es auch auf der Server Seite?

Insbesonderen wenn der letzte Byte gesendet worden ist ,das heisst der Server hat nichts mehr zu schicken, dieser Byte aber verloren geht. Bekommt der Server das mit?

Problematik:
Ich möchte von Server einen Code 304 not modified erhalten falls sich seit dem letzten Request nichts getan hat. Dafür speicher ich eine ID des Clients auf der Server Seite für die jeweiligen Daten ab.

Falls nun der Server fälschlicherweise davon ausgeht das alles übertragen worden ist wird er beim erneuten Request 304 schicken. Der Client geht also leer aus.

Deswegen stellen sich für mich zwei essentielle Fragen:

  1. Bekommt der Server eine nicht vollständige Übertragung mit?
  2. Wie sollte ich verfahren wenn zwar alles übertragen worden ist, der Client aber bei der Verarbeitung der Daten abstürzt. So das eine erneute Anfrage stattfinden muss. Sollte ich die Anfrage ID einfach neu generieren oder gibt es bessere Lösungen?

Vielen Dank
Zicky


#2

Ja.

Nix machen, das BACKEND sollte immer in 'nem gültigen Zustand sein.


#3

Code 200 ist nicht anderes als ein Status. Damit teilt der Server dem Client mit: Die Anfrage konnte korrekt bearbeitet werden - alles ok. Dementsprechend kannst du von ausgehen, dass sich nichts mehr ändert. Und da es die Antwort auf deine Anfrage ist: ja, der ist auf beiden Seiten gleich (sofern keine Manipulation statt gefunden hat).

Das ist durch TCP garantiert. Wenn etwas verloren geht, dann wird es wieder angefordert. Also brauchst du dir darum keine Gedanken zu machen.

Warum muss der Server das wissen? Besser wäre, wenn du deine Daten einen Timestamp hätten. Der Client kann dann angeben, wann er das letzte mal seine Daten bezogen hat. Der Server prüft, ob es neuere Daten gibt und schickt (wenn vorhanden) diese. Somit überträgst du die Verantwortung an den Client.


#4

Danke, kann geschlossen werden