Nigdy wcześniej nie budowałem interfejsu API RESTful i zastanawiam się, jak dyskretny powinien być?
Załóżmy na przykład, że mam klienta, który ma imię i nazwisko, adres, numer telefonu, adres e-mail, język itp.
Czy ma sens, że istnieje sposób na aktualizację każdego pola (adres aktualizacji, adres e-mail aktualizacji itp.), Czy może powinna być tylko jedna aktualizacja dla całego klienta, a każde pole jest opcjonalne?
Odpowiedzi:
Masz jedną akcję aktualizacji dla zasobu. Z grubsza ogólną zasadą jest, że tabela w bazie danych będzie zasobem. Tak więc w twoim przykładzie jest jeden kontroler dla klienta z jedną akcją aktualizacji, a pola są opcjonalne, o ile to możliwe.
Mogą istnieć wyjątki od tego (na przykład, jeśli zaktualizujesz hasło, którego oczekujesz, hasło i hasło_potwierdzenie), ale tak jest w większości przypadków.
Bardziej prawdopodobne jest, że wyjątkami są kontrolery, które mają ograniczone działania dla niektórych zasobów, takie jak SessionsController, który można tylko tworzyć i niszczyć. Jest bardzo mało prawdopodobne, że chcesz mieć działania dla pojedynczych pól.
W twoim przykładzie jedną rzecz można traktować jako własny zasób, a mianowicie adres. Jeśli masz tabelę adresów, szczególnie jeśli na klienta przypada więcej niż jeden adres (fakturowanie, dostawa ...), można to potraktować jako zasób zagnieżdżony. Ale znowu jedna akcja aktualizacji dla całego zasobu adresu.
źródło