Ich entwickle eine REST-API und muss Kryptogramme übertragen, um die Nachricht für jede Anfrage in einem Anwendungsprozess zu authentifizieren (MAC-Verschlüsselung von geheimen Schlüsseln). Ich habe darüber nachgedacht, sie in den Nachrichtenkopf zu schreiben, um zu vermeiden, dass Nichtdateninformationen in den Nachrichtentext eingefügt werden, der das Posted / Retrieved-Objekt (XML oder JSON) enthält.
Ist es eine gute Praxis?
Kann ich so viele Parameter hinzufügen, wie ich möchte? Ich habe gelesen, dass ich ihnen "x-" voranstellen muss. Das Verhalten dieses Parameters ist genau dasselbe wie Pfad- oder Abfrageparameter?
Ich benutze Jersey.
Danke für Ihre Hilfe.
Ja Ich glaube, es ist akzeptabel, Header-Parameter zu haben, um bestimmte Daten zu übertragen. Der JAX-RS-Standard definiert sogar die @HeaderParam-Annotation . Einfaches Beispiel von @HeaderParam .
Es ist eine Konvention, nicht standardmäßige HTTP-Header mit "x -" zu versehen.
Ich hatte eine ähnliche Situation wie Sie: Ich musste bei jedem REST-Aufruf Benutzer-Token und Anwendungs-ID übertragen. Um Code-Duplizierung zu vermeiden, implementierte ich PreProcessInterceptor
( Ich benutze Resteasy), über die alle REST-Anfragen geroutet werden. Wenn das Benutzer-Token nicht gültig ist und der Benutzer keine Berechtigungen für die angegebene Anwendungs-ID hat, gebe ich 401 nicht autorisiert zurück. Mein Code sah ähnlich (vereinfachte Version) aus:
Tags und Links rest jersey parameter-passing http-headers