Grundsätzlich besteht eine Funktion meiner App darin, die Freunde des angemeldeten Benutzers abzurufen.
Eigentlich zögere ich zwischen beiden Endpunkten:
- GET / api / users / friends
- GET / api / users /: userId / friends
Die Verwendung von 1 userId
wäre über das Authentifizierungstoken erreichbar.
Bei Verwendung von 2 müsste der Server zusätzlich die Übereinstimmung zwischen der übergebenen userId
und der protokollierten Benutzer-ID überprüfen , die im Authentifizierungstoken angegeben ist, um böswilligen Zugriff auf andere Benutzerdaten wie Freunde zu vermeiden.
1 sollte also genug sein, aber es klingt nicht nach einer Standard-Ruhe-URL.
Was ist eine gute Praxis?
quelle
GET /api/friends
würde ich es umbenennenGET /api/myFriends
. Unter dem Gesichtspunkt der Auffindbarkeit ist es selbstdokumentierender. Bei REST ist es außerdem nützlich, darüber nachzudenken, wie ein Browser / Proxy-Cache damit umgehen würde. Mit istGET /api/myFriends
es durchaus möglich, einen Fehler zu haben, bei dem Sie aufgrund von Caching die falschen Freunde anzeigen.Rest APIs müssen hypertextgesteuert sein! Wie Sie auf einer Standard-HTML-Seite von einem Link zum anderen klicken würden.
Eine URL ist eine eindeutige Kennung für eine Ressource. Eine URL, die mehr als eine Ressource darstellt, stimmt nicht mit ReST überein.
Mit Ihrem Beispiel die folgende URL:
sollte einen Link in seiner Antwort auf die URL: userId friends haben
Die Dissertation von Roy Fielding enthält eine Reihe von Einschränkungen, die zur Einhaltung von ReST erforderlich sind.
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven http://fr.slideshare.net/rnewton/2013-06q-connycrestfulwebapis http: //www.ics. uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
quelle