2017-06-07 4 views
0

Ich habe Probleme, eine REST-API zu strukturieren, bei der mehrere Eigentümer dieselbe Ressource verwenden können. Zum Beispiel, wenn es users und organizations gibt und jeder von ihnen etwas wie images oder locations hat. Ein Bild und ein Objekt ist ein Datenbankfeld, die die gleiche ist für Benutzer und Organisationen ... ich zwei grundlegende Möglichkeiten, um darüberREST-API-Ressourcenstruktur, in der mehrere "Eigentümer" vorhanden sind

Separate Endpunkte gehen sehen:

POST /users/:userID/documents 
GET /users/:userID/documents/:id 
POST /org/:orgID/documents 
GET /org/:orgID/documents/:id 

Profis getrennten Endpunkte: Die Logik ist sauber und alles ist sehr offensichtlich

Nachteile von separaten Endpunkten: Es gibt eine Menge Code-Kopieren zwischen den Endpunkten.

Gemeinsame Endpunkte:

POST /documents 
GET /documents/:id 

Profis von separaten Endpunkte: Es gibt insgesamt weniger Endpunkte, weniger Code kopieren.

Nachteile der getrennten Endpunkte: Die Logik chaotisch wird, IDK die beste Weg, um eine Abfrage-String verwenden könnte gehen über die orgID oder userID mit der Anfrage (ohne tatsächlich die Schaffung eines neuen Endpunkt in der /documents Ressource sendet ich. , aber das fühlt es einfach falsch ... (IDK wenn es falsch ist)

Jede Beratung?

Antwort

1

sie alle auf den Anwendungsszenarien für Ihre API.

es ist nichts falsch mit separatem Endpunkt hängt s, wenn der Fluss in der Regel Benutzer/Organisationen und ihre jeweiligen Dokumente anfordern würde. Es muss auch keine Code-Duplizierung bedeuten - Sie können einfach eine Art gemeinsames DocumentRepository im Backend haben, das an mehreren Stellen verwendet wird.

Wenn jedoch die Anforderungen sind einfach/Anzeige von Dokumenten suchen, ein Abfrage-String könnte Ihre beste Wette:

GET /documents?userId={userId}&organizationId={organizationId} 
Verwandte Themen