Die URL gibt die Ressource selbst an. Ein "Client" ist eine Ressource, auf die reagiert werden kann. Sie sollte daher Teil der Basis-URL sein : /orders/view/client/23
.
Parameter sind genau das, um den Zugriff auf die Ressource zu parametrisieren. Dies kommt insbesondere bei Beiträgen und Suchen ins Spiel : /orders/find?q=blahblah&sort=foo
. Es gibt eine feine Linie zwischen Parametern und Unterressourcen : /orders/view/client/23/active versus /orders/view/client/23?show=active
. Ich empfehle den Subressourcenstil und die Reserveparameter für Suchvorgänge.
Da jeder Endpunkt eine Statusübertragung darstellt (um die Mnemonik zu entstellen), sollten benutzerdefinierte Header nur für Dinge verwendet werden, die nicht den Namen der Ressource (die URL), den Status der Ressource (den Body) oder Parameter direkt betreffen Auswirkungen auf die Ressource (Parameter). Damit bleiben echte Metadaten über die Anforderung von benutzerdefinierten Headern.
HTTP bietet eine sehr große Auswahl an Headern, die fast alles abdecken, was Sie benötigen. Ich habe gesehen, dass benutzerdefinierte Header in einer System-zu-System-Anforderung angezeigt werden, die im Auftrag eines Benutzers ausgeführt wird. Das Proxysystem überprüft den Benutzer, fügt " X-User: userid
" zu den Headern hinzu und verwendet die Systemanmeldeinformationen, um den Endpunkt zu erreichen. Das empfangende System überprüft, ob die Systemanmeldeinformationen berechtigt sind, im Namen des Benutzers zu handeln, und überprüft dann, ob der Benutzer berechtigt ist, die Aktion auszuführen.
Benutzerdefinierte Header bieten folgende Vorteile:
quelle
Ich würde einen benutzerdefinierten Header nur verwenden, wenn es keine andere Möglichkeit gibt, Informationen nach Standard oder Konvention weiterzugeben. Darren102 erklärt den typischen Weg, um diesen Wert zu übergeben. Ihre API wird viel benutzerfreundlicher, wenn Sie typische Musterverse mit benutzerdefinierten Headern verwenden. Das heißt nicht, dass Sie keinen Fall haben, um sie zu verwenden, nur dass sie der letzte Ausweg sein sollten und etwas, das nicht bereits von der HTTP-Spezifikation behandelt wird.
quelle
Authentifizierung: GUIDs, Basisauthentifizierung, benutzerdefinierte Token usw., z. B. Basisauthentifizierung mit einem Guid-Token für die REST-API anstelle von Benutzername / Kennwort
Wenn Sie an der Weitergabe von Token oder anderen authentifizierungsähnlichen Informationen zwischen Domänen beteiligt sind, die von PCI-DSS oder anderen Sicherheitsregeln abgedeckt werden, müssen Sie möglicherweise auch Parameter begraben, da in einigen Vorschriften Authentifizierungselemente ausdrücklich erforderlich sind, um sich von URLs fernzuhalten, die trivial wiedergegeben werden können (von Browserverläufe, Proxy-Protokolle usw.).
quelle
Es gibt keinen Standard für REST, wie auch immer der akzeptierte Weg wäre
Wenn Sie die benutzerdefinierten Header und damit die 23 After View nicht verwenden, wird davon ausgegangen, dass es sich um die ID handelt. Daher hätten Sie eine Funktion, die die ID aufnimmt und daher genau diese Informationen erzeugt.
quelle
Ich würde keine benutzerdefinierten Header verwenden, da Sie nicht wissen, ob Proxys diese weitergeben. URL-basiert ist der richtige Weg.
quelle
Auf jeden Fall OK:
Auch ok:
Ich würde denken, das wäre auch in Ordnung:
quelle
Sie können benutzerdefinierte Header verwenden, um weitere Informationen zu einer teilweise verarbeiteten Anforderung aufzunehmen, da das Umhüllen keine bewährte Methode ist. Die Header sind sicher .
quelle