Für unseren REST-Service möchte ich bei jeder Antwort eine eindeutige Anforderungs-ID zurücksenden. nützlich zum Debuggen interner Projekte, aber auch zum Anbieten von Unterstützung für Dritte, die den Service möglicherweise in Zukunft nutzen.
Ich habe beschlossen, einen Antwortheader zu verwenden, da nicht alle REST-Anforderungen zu einem Antworttext führen müssen (häufig nutzen REST-APIs niedrigerer Ebene nur den Statuscode und die Beschreibung), müssen diese Anforderung jedoch weiterhin zurücksenden ICH WÜRDE.
Ich möchte nach Möglichkeit sicherstellen, dass ich einen HTTP-Antwortheader verwende, der auf diesem Weg wahrscheinlich nicht von Proxys entfernt wird.
Dies könnte sehr wichtig sein, da es sich bei einer großen Anzahl von Clients wahrscheinlich um mobile Geräte handelt, bei denen es sich zwangsläufig um interessante Netzwerktopologien zwischen ihnen und unseren Servern handelt.
Dieselben Dienste werden jedoch wahrscheinlich auch mit ihren eigenen Unternehmensfirewalls / -proxys an andere Unternehmen vermarktet.
Aus diesem Grund habe ich die Idee, einen benutzerdefinierten Antwortheader zu verwenden, zugunsten eines bekannten Headers verworfen.
Mein derzeit bekannter bekannter Header wäre der ETag
Header, aber obwohl er fast richtig ist, ist er nicht ganz - denn ein ETag
ist für eine Ressource, keine Anfrage (dh zwei separate Anfragen für dieselbe Ressource geben zu Recht dieselbe zurück ETag
). Wenn ich das verwende, bedeutet dies außerdem, dass ich für nichts anderes Entity-Tagging durchführen kann.
Hat jemand bessere Ideen?
Aktualisieren
Der Pragma-Header könnte anscheinend verwendet werden, aber ich habe Probleme beim Schreiben in der Asp.Net-WebAPI. Hier ist eine verwandte Frage zu SO .
quelle
Schauen Sie sich die Richtlinien des Heroku-Teams an. Unter anderem schlagen sie wie Etags eine Request-ID im Header vor. Wir versuchen, die meisten dieser Richtlinien dort umzusetzen, wo sie sinnvoll sind.
https://github.com/interagent/http-api-design/blob/master/README.md
quelle