Ruby on Rails - Unterscheidung im plural vs. singular Ressource in der REST-API
Arbeite ich auf den Aufbau der URLs für meine REST-API, bevor ich beginnen das schreiben von code. Rails REST Magie ist fantastisch, aber ich bin etwas gestört die Formatierung einer URL wie:
http://myproject/projects/5
Projekt, wo ist meine Ressource und 5 wird die project_id. Ich denke, wenn ein user abrufen alle Ihre Projekte, dann eine entsprechende HTTP-GET - http://myproject/projects
Sinn macht. Allerdings, wenn Sie schauen, um abrufen von Informationen auf eine einzigartige Ressource, z.B. ein Projekt, dann macht es Sinn, um http://myproject/project/5
vs http://myproject/projects/5
. Ist es am besten zu vermeiden, diese Kopfschmerzen, oder haben einige von Euch ein ähnliches Anliegen haben und-noch besser - eine funktionierende Lösung?
- Ich sagen, gehen mit der Strömung. Konvention über Konfiguration, erinnern Sie sich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schienen (3) hat eine Menge von Konventionen, wenn es um singular vs. plural. Zum Beispiel, Modell-Klassen sind immer im singular (
Person
), während die entsprechenden Tabellen immer im plural (people
). (Zum BeispielPerson.all
Karten zuselect * from people
.)Strecken, es gibt ein Konzept für eine einzigartige Ressource als auch als plural Ressource. Also, wenn du hast
resource :account
dann hätte man Pfade wie/account
für den default-Pfad oder/account/edit
für ein Weg, um ein Formular zu Bearbeiten, das Konto. (Beachten Sie, dass die Schienen verwendet/account
mit einemPUT
Methode tatsächlich aktualisieren Sie das Konto./account/edit
ist eine form des Accounts zu Bearbeiten, die eine eigene Ressource aus dem account an sich.) Wenn du das getan hastresources :people
aber dann hätte man Pfade wie/people
,/people/1
, und/people/1/edit
. Die Pfade selber angeben, ob es kann nur eine Instanz eines bestimmten Typ der Ressource, oder ob es mehrere Instanzen, die sich durch irgendeine Art von id.Ich bin damit einverstanden, mit der Strömung gehen. Überlegen Sie, wie die URL bildet eine Hierarchie.
Den Stammordner Ihrer website ist, wo Sie beginnen, um Zugriff auf alles.
/Projekte/verengt es hinunter zu nur Projekte, nichts anderes. Von den Projekten, die Sie tun können eine Menge Dinge, /list, /index/, /export, etc... der /id-Grenzwerte die Dinge sogar noch weiter.
Bei jedem /den Bereich was tun wird schmaler, und ich denke, es macht Sinn.
Weitere Programmierung ist alles über willkürliche Regeln. Indexs beginnend bei 1 vs 0, und so weiter. Alle, die mit Ihren urls zu Sortieren Dinge kurz um.
Gibt es Fälle, in denen ein singulärer Pfad auf eine Ressource, die hilfreich ist. Wenn Sie Ihre Ressource-ids werden nicht-numerische Benutzer-definierte Namen dann routing Auseinandersetzungen sind möglich. Beispiel:
/Anwendungen/neue --> erstellen Sie eine neue Anwendung oder zeigen Sie Benutzer-Anwendung mit dem neuen?
In dieser situation können Sie wählen, begrenzen Sie die Benutzer-Eingabe zu vermeiden, den Kampf, oder, dies kann umgangen werden durch überschreiben der Standard-Rails-3-Verhalten:
Dann, wenn Sie eine neue Ressource route:
Dient der Erstellung der Routen: