2017-03-27 2 views
0

Wir erstellen einen erholsamen Service für die Bereitstellung von Mitarbeiterdaten.Rest URL-Standards - Mehrere Pfadparameter

Wir haben eine API, die die Liste der Mitarbeiter zurückgibt, die zu einer bestimmten Abteilung eines Kunden gehören.

Diese api dauert 2 Parameter - clientId und DepartmentID

Gemäß Standards der unten, welches der richtige Weg ist, eine erholsame URL für diese api zu konstruieren?

1) /client/{clientId}/Abteilung/{DepartmentID}/Mitarbeiter

2) /client/{clientId}/Mitarbeiter? DepartmentID = {DepartmentID}

Kann ein erholsame URL kann mehrere Pfadparameter haben? Wenn ja/nein zu obiger Frage - warum ist es so?

Antwort

0

IMO, beide sehen gut aus. Verwenden Sie die zweite, wenn Sie alle Mitarbeiter unabhängig von der Abteilung auflisten möchten (und nach Abteilungen filtern können).

Die erste würde diesen Anwendungsfall etwas komplizierter machen. Es sei denn, Sie stellen immer noch eine Möglichkeit zur Verfügung, alle Mitarbeiter mit einem anderen URI zu erreichen (ich würde dies jedoch nicht empfehlen, da es in der Lage ist, die gleichen Informationen aus verschiedenen URIs zu finden, was das API schwer verständlich macht).

0

In RESTful-APIs werden die Pfadparameter verwendet, um eine Ressource (Client, Auftrag, Blogpost usw.) zu identifizieren. Diese Ressource ist oft ein Datensatz in einer Datenbank. Einige Datenbanktabellen haben zusammengesetzte Schlüssel beispiels, wenn Sie ein System, das Daten über die Mitarbeiter von mehreren verschiedenen Clients speichert dann könnte es Einträge in der Datenbank enthalten sein wie

name | client_id | department_id 
John | 1  |  1 
Jane | 2  |  1 

Wo beide Clients haben eine Abteilung mit id 1.

In diesem Fall, wenn der Zweck ist, die Ressource Liste aller Mitarbeiter in einer bestimmten Abteilung für einen bestimmten Client zu identifizieren, dann ist es sinnvoll, mehrere Pfadparameter zu verwenden.

/client/{clientId}/department/{departmentId}/employees 

Allerdings, wenn dies eher eine Suche API ist dann könnte es Sinn machen haben zu

employees?age={age}&height={height} 
Verwandte Themen