Ich habe noch nie eine RESTful-API erstellt und frage mich, wie diskret sie sein soll.
Nehmen wir zum Beispiel an, ich habe einen Kunden, der einen Namen, eine Adresse, eine Telefonnummer, eine E-Mail-Adresse, eine Sprache usw. hat.
Ist es sinnvoll, dass es eine Möglichkeit gibt, jedes einzelne Feld zu aktualisieren (Adresse aktualisieren, E-Mail-Adresse aktualisieren usw.), oder sollte es nur eine einzige Aktualisierung für den gesamten Kunden geben und jedes Feld ist optional?
Antworten:
Sie haben eine Aktualisierungsaktion für eine Ressource. Als Faustregel gilt, dass eine Tabelle in Ihrer Datenbank eine Ressource ist. In Ihrem Beispiel gibt es also einen Controller für den Kunden mit einer Aktualisierungsaktion, und Felder sind so weit wie möglich optional.
Es kann Ausnahmen geben (z. B. wenn Sie das Kennwort aktualisieren, erwarten Sie ein Kennwort und eine Kennwortbestätigung), dies gilt jedoch in den meisten Fällen.
Es ist wahrscheinlicher, dass es sich bei den Ausnahmen um Controller handelt, die für bestimmte Ressourcen nur eingeschränkte Aktionen ausführen, z. B. einen SessionsController, der nur erstellt und zerstört werden kann. Es ist sehr unwahrscheinlich, dass Sie Aktionen für einzelne Felder wünschen.
In Ihrem Beispiel könnte eine Sache als eine eigene Ressource behandelt werden, nämlich die Adresse. Wenn Sie eine Tabelle für Adressen haben würden, insbesondere wenn es mehr als eine Adresse pro Kunde geben würde (Rechnungsstellung, Lieferung ...), könnte dies als verschachtelte Ressource behandelt werden. Aber noch einmal eine Update-Aktion für die gesamte Adressressource.
quelle