Unterscheidung zwischen Infrastruktur und Geschäftslogik bei Verwendung von HTTP-Statuscodes
Wir versuchen, eine REST-Schnittstelle zu erstellen, mit der Benutzer die Existenz einer bestimmten Ressource testen können. Angenommen, wir verkaufen Domain-Namen: Der Benutzer muss feststellen, ob die Domain verfügbar ist.
Ein HTTPGET
kombiniert mit200
und404
Antwortcodes erscheinen auf den ersten Blick sinnvoll.
Das Problem besteht darin, zwischen einer Anfrage, die von unserem Suchdienst erfolgreich bearbeitet wurde, und einer Anfrage zu unterscheiden, die aufgrund eines außergewöhnlichen Verhaltens von anderen Komponenten bearbeitet wurde. Zum Beispiel:
404
und200
kann von zwischengeschalteten Proxys zurückgegeben werden, die die Anforderung tatsächlich blockieren. Dies kann auf eine falsche Proxy-Konfiguration oder sogar auf eine externe Infrastruktur wie z. B. Wifi im Café zurückzuführen sein, die eine schlechte formularbasierte Authentifizierung verwendet.
Clients verwenden möglicherweise fehlerhafte URLs. Dies kann durch Verfall oder (erneut) durch Fehlkonfiguration geschehen. Wir könnten die ersteren durch bekämpfen301
, jedoch.
Was ist die derzeitige bewährte Methode zur Unterscheidung zwischen Antworten, die erfolgreich gegen die Absicht des Kunden für diese Anfrage erfüllt wurden, und Antworten, die durch außergewöhnliches Verhalten zugestellt wurden?
Das Problem wird durch das Tunneln von Antworten durch den Antwortkörper behoben, da wir sicherstellen können, dass diese für unseren Dienst eindeutig sind. Scheint jedoch nicht sehr RUHIG!