2016-03-23 4 views
0

Wenn Sie im Kontext einer API Authorization Header Tokens verwenden, um den Benutzer bei jeder Anfrage zu authentifizieren, wie gehen Sie dann vor, RESTful-Routen einzurichten, die ansonsten die Benutzer-ID verwenden würden 'in der URL-Anfrage?RESTful Routing - Header-Autorisierung in APIs

Beispiel:

POST /api/school/5/user

Fügen Benutzer zur Schule

DELETE /api/school/5/user/???
Entfernt Benutzer von der Schule

jedoch die DELETE-Anfrage würde den Benutzer-ID in der Anforderung benötigen, die, wenn sie Sie verwenden ein Token Bearer Authorization, das in der URL nicht übergeben wird, wodurch diese Ressourcen erschwert werden einrichten.

Wie wird das generell gehandhabt?

+0

Wie bezieht sich der Autorisierungsheader auf die Ressourcen-ID? Was meinst du damit? – Kamil

+0

@Kamil ist es nicht aber ein Benutzer könnte ein Ressourcenmodell (oder Unterressource) sein. Wenn der aktuelle Benutzer jedoch über ein Autorisierungstoken abgerufen wird und Sie eine Ruhepause machen möchten, bei der dieser Benutzer beteiligt war, scheint dies schwierig zu sein, da Sie den Benutzer nicht über die URL übergeben – djt

Antwort

0

Die besten Lösungen, die ich für diese gefunden sind:

1) Sie können die Benutzer-ID über die URL übergeben, sondern nur vergleichen Sie es mit der Benutzer-ID des Benutzers aus dem Token-Autorisierung abgerufen. So könnten Sie eine URL haben wie:

/api/school/5/user/7

Und Sie Middleware prüfen, ob die Benutzer in Ihrer Authorization Heaer, die Benutzerspiele über die URL übergeben. Auf diese Weise erhalten Sie RESTful Routing.

OR

2) Änderung der URL-Struktur etwas aus und haben eine Me Route Präfix. Daher sollten alle Routen, die auf dem angemeldeten Benutzer basieren, mit Me (oder ähnlich) vorangestellt werden. Spotify, Facebook und die APIs vieler anderer Unternehmen nutzen dies.

Ich bevorzuge es mit der ersten Lösung, denn obwohl die erste scheint mehr Standard, die Idee der Weitergabe einer Benutzer-ID in URL unnötigerweise scheint weniger als ideal.