Zusammengesetzter Schlüssel für REST-API-Methoden

8

Ich suche nach den Best Practices für RESTful-API-Design für den folgenden Anwendungsfall:

Domain Objekt Fahrzeug:

%Vor%

Ein Beispielobjekt:

%Vor%

In diesem Domänenmodell gibt es keinen einzelnen eindeutigen Feldbezeichner (z. B. vehicleId), sondern alle Felder des Objekts bilden zusammen den Primärschlüssel (diese Einschränkung ist in der Datenbankschicht vorhanden).

Wir haben keine Flexibilität, dieses Domänenmodell so zu ändern, dass ein eindeutiger Feldbezeichner hinzugefügt wird.

Meine Frage lautet also wie folgt: Wenn ich eine einfache REST-API oberhalb dieses Domänenobjekts hinzufügen möchte, die einfache Funktionen zum Erstellen, Aktualisieren, Löschen und Abrufen von Fahrzeugen bietet, was ist die beste Vorgehensweise für die PATH-Endpunkte für diese Methoden?

Wenn das Domänenmodell nach dem obigen Beispiel einen eindeutigen Feldbezeichner vehicleId hätte, dann könnte ich mir die folgenden Endpunkte vorstellen:

%Vor%

Ich kenne kein Muster, das ähnlich für zusammengesetzte Schlüssel wie folgt existiert:

%Vor%

scheint falsch zu sein.

Jeder Hinweis auf ein gutes Muster für diesen Anwendungsfall würde sehr geschätzt werden.

Danke

    
JoshDavies 07.09.2015, 21:11
quelle

1 Antwort

4

Gemäß den allgemeinen REST-Standards stellt jeder Endpunkt eine Ressource zur Verfügung, und der Client kann sie mit http-Verben bearbeiten. In diesem Beispiel ist Ihre Ressource Vehikel und der Client ruft Daten vom Server mit GET ab. Idealerweise sollte jede Ressource eindeutig mit einem eindeutigen (einzelnen) Schlüssel identifiziert werden.

Aber Ihre Ressource (Fahrzeug) hat keinen eindeutigen Wert und kann nicht im System geändert werden! In diesem Fall können Sie den GET-Aufruf mit allen erforderlichen Parametern ausführen, um die Ressource wie alle anderen Standard-HTTP-Aufrufe wie

zu identifizieren %Vor%

Die von Ihnen verwendete Technologie / Plattform Wenn Sie benutzerdefinierte Routen für Ihre Methode erstellen können, können Sie eine benutzerdefinierte Route wie

erstellen %Vor%

Und nennen Sie Ihren Service als

%Vor%

Das Gute daran ist, dass deine Uri kürzer wird. Aber auf der anderen Seite [1] Für alle Methoden / Ressourcen dieses Typs müssen Sie benutzerdefinierte Routen erstellen, und [2] diese URI macht wenig Sinn, wenn Sie die spezifische Methode und Route kennen.

    
Arghya C 08.09.2015 08:36
quelle

Tags und Links