Soweit ich das beurteilen kann, sollte jede einzelne Ressource nur einen kanonischen Pfad haben. Was wären im folgenden Beispiel gute URL-Muster?
Nehmen Sie als Beispiel eine Restrepräsentation von Unternehmen. In diesem hypothetischen Beispiel kann jedes Unternehmen besitzt 0 oder mehr Abteilungen und jede Abteilung besitzt 0 oder mehr Beschäftigten.
Eine Abteilung kann ohne ein verbundenes Unternehmen nicht existieren .
Ein Mitarbeiter kann ohne eine zugehörige Abteilung nicht existieren .
Jetzt würde ich die natürliche Darstellung der Ressourcenmuster finden.
/companies
Eine Sammlung von Unternehmen - Akzeptiert Put für ein neues Unternehmen. Holen Sie sich für die gesamte Sammlung./companies/{companyId}
Ein individuelles Unternehmen. Akzeptiert GET, PUT und DELETE/companies/{companyId}/departments
Akzeptiert POST für einen neuen Artikel. (Erstellt eine Abteilung innerhalb des Unternehmens.)/companies/{companyId}/departments/{departmentId}/
/companies/{companyId}/departments/{departmentId}/employees
/companies/{companyId}/departments/{departmentId}/employees/{empId}
Angesichts der Einschränkungen in jedem der Abschnitte halte ich dies für sinnvoll, wenn es etwas tief verschachtelt ist.
Meine Schwierigkeit tritt jedoch auf, wenn ich GET
alle Mitarbeiter in allen Unternehmen auflisten möchte .
Das Ressourcenmuster dafür würde am ehesten /employees
(Die Sammlung aller Mitarbeiter) zugeordnet.
Bedeutet das, dass ich es /employees/{empId}
auch haben sollte, denn wenn ja, dann gibt es zwei URIs, um dieselbe Ressource zu erhalten?
Oder vielleicht sollte das gesamte Schema abgeflacht werden, aber das würde bedeuten, dass Mitarbeiter ein verschachteltes Objekt der obersten Ebene sind.
Auf einer grundlegenden Ebene wird /employees/?company={companyId}&department={deptId}
genau die gleiche Ansicht der Mitarbeiter zurückgegeben wie das am tiefsten verschachtelte Muster.
Was ist die beste Praxis für die URL - Muster , bei denen Ressourcen im Besitz von anderen Ressourcen , sondern separat Abfrage-fähig sein?