Wie diskret sollte eine RESTful-API sein?

12

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?

satur9nine
quelle
3
Welchen Teil von REST möchten Sie? Wenn Sie nur eine einfache API benötigen, die sich nicht um die Standards kümmert, können Sie diese wie die akzeptierte Antwort von Thorsten Müller behandeln. Wenn Sie eine echte Pause wollen, müssen Sie nach Roy Fielding suchen (+ Dissertation zum Beispiel). Er ist der Erfinder von REST. Sie werden zum Beispiel feststellen, dass eine Ressource == eine Tabelle nicht die Wahrheit ist. Sie werden auch feststellen, dass beispielsweise für Ihre Frage häufig eine PATCH-HTTP-Methode zum Aktualisieren eines oder mehrerer Felder verwendet wird. Wobei die POST- oder PUT-Methode (hier wird viel diskutiert) für vollständige Aktualisierungen einer Ressource verwendet werden kann.
Luc Franken

Antworten:

17

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.

thorsten müller
quelle