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:
- Sicherheitsanmeldeinformationen werden in Kopfzeilen abgelegt, da sie höchstwahrscheinlich an allen Stellen einer Anwendung gleich behandelt werden. Auf Implementierungsebene wird es wahrscheinlich einen Anforderungsfilter geben, der Anforderungen ohne gültige Anmeldeinformationen ablehnt, unabhängig davon, auf welchem Endpunkt die Anforderung tatsächlich verarbeitet wird, falls sie den Filter passiert.
- Wenn Sie andererseits einen Endpunkt haben, auf dem ein Administrator Benutzer zu Ihrem System hinzufügen kann, sollte sich das Login des zu erstellenden Benutzers im Anforderungshauptteil befinden, da: a) es von der Geschäftslogik Ihrer Anwendung verwaltet wird, b) es erscheint in diesem speziellen Endpunkt, aber nicht in anderen.
- Optionen, die das Caching steuern, passen möglicherweise in Header (es sei denn, das Caching ist ein zentraler Bestandteil der Geschäftslogik Ihrer Anwendung).
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.