Ich arbeite an einer Reihe von Webdiensten für einen mobilen Client, und die Anforderungen verlangen, dass eine eindeutige Geräte-ID in allen Anforderungen enthalten ist, in bestimmten Anforderungen gespeichert und zum Filtern von Ergebnissen in anderen verwendet wird.
Es wurde vorgeschlagen, dass es in einen benutzerdefinierten HTTP-Header eingefügt wird, da es in allen Anforderungen enthalten ist. Daher begann ich mich zu fragen, anhand welcher Kriterien bestimmt werden kann, ob ein bestimmtes Datenelement in einen Header oder zusammen mit anderen Daten in gehört der Anfragetext.
Gibt es solche Kriterien?
http
http-request
Mike Partridge
quelle
quelle
Antworten:
Wenn die Informationen wichtig sind, sollten Sie sie in den Körper einfügen.
Warum?
quelle
Während die Zeile etwas verschwommen ist, lautet für mich die Faustregel: Daten, an denen Ihre Geschäftslogik arbeitet, sollten sich im Hauptteil befinden, Metadaten können / sollten in Überschriften abgelegt werden.
Eine andere Sichtweise ist: Daten, die nur in bestimmten Arten von Anfragen erscheinen, sollten sich im Hauptteil befinden, während Daten, die in der gesamten Anwendung einheitlich behandelt werden, in Kopfzeilen abgelegt werden sollten.
Ein weiterer Gesichtspunkt ist: Können Sie sich vorstellen, dass ein Datenelement global verarbeitet wird, z. B. von einem Router / einer Firewall anstatt von Ihrer Anwendung? Wenn ja, sollte es wahrscheinlich eher in die Header als in den Body gehen.
Einige Beispiele für die Anwendung dieser Regeln wären:
Zurück zu Ihrer Frage zur eindeutigen Geräte-ID: Wenn sie überall einheitlich verwendet wird, z. B. nur für die Protokollierung, können Sie sie in die Kopfzeilen einfügen. Wenn es jedoch verwendet wird, um Anforderungen je nach Endpunkt auf unterschiedliche Weise zu filtern, ist es besser, es befindet sich im Hauptteil. Wenn Sie beide Anwendungsfälle haben, ist es wahrscheinlich besser, sich nur an eine einzige Art der Übergabe zu halten (wahrscheinlich an die Header), als den API-Benutzer zu zwingen, dieselben Daten an zwei Stellen abzulegen inkonsistente Eingaben oder Implementierung einer Validierung.
quelle
Den Inhalt der Kundenanfrage; die nicht über mehrere Anfragen an denselben Server hinweg geändert werden, sind Teil von HEADER, z. B. Anmeldeinformationen, andere, die häufig pro Anfrage geändert werden, sind Teil von BODY.
ODER
Die Eigenschaft des Nachrichten- / Textinhalts wird in die Kopfzeile übernommen. zB) Codierungstyp, Inhaltslänge, Inhaltstyp.
UND
In Ihrem Fall sollten Filterparameter als Abfrage- / Anforderungsparameter in die URL eingefügt werden.
/mobiles?type=MOTO&colour=black
In erholsamen Diensten verweist die URL selbst auf ein Objekt
/conferences/{conference_id}
-> verweist auf eine bestimmte Konferenzquelle