Pracuję nad nowym projektem aplikacji na iOS po stronie mobilnej. Trwają pewne zmiany architektury i okazuje się, że będziemy musieli polegać na niestandardowym, prywatnym interfejsie API, który będzie używany przez aplikację, którą tworzymy, a także przez innych klientów, takich jak strona internetowa.
Zaprojektowany interfejs API jest zgodny ze stylem Rest operacji URI i CRUD zorientowanych na zasoby odwzorowanych na czasowniki HTTP. rzeczy jak:
GET www.example.com/books
DELETE www.example.com/books/482094
POST www.example.com/users/6793
Problem polega na tym, że ten styl często powoduje, że klient mobilny musi wykonywać wiele żądań ładowania pojedynczego ekranu aplikacji lub zarządzania pojedynczym działaniem interfejsu użytkownika. To powoduje, że aplikacja jest w trybie ładowania przez 8 sekund, aż będzie miała wszystko, czego potrzeba. Wolna i niereagująca aplikacja.
Klienci mobilni mają poważne ograniczenia, jeśli chodzi o łączność, dlatego najlepiej jest przestrzegać takiej zasady:
1 ekran == 1 wywołanie API
1 zapis == 1 wywołanie API.
Istnieje wiele sytuacji, w których stawia Cię kurs kolizyjny z zasadami projektowania REST, na przykład:
- powiedzmy, że Twoja aplikacja była offline przez jeden dzień i musisz zsynchronizować się z czterema tabelami baz danych zaplecza i potrzebujesz połączenia takiego jak
www.example.com/sync_everything?since=2015-07-24
- powiedzmy, że jest ekran, na którym użytkownik może edytować wiele swoich obiektów, na przykład zaznaczanie zadań na swojej liście zadań. powinien istnieć sposób edycji wszystkich tych rekordów zadań w jednym pojedynczym wywołaniu interfejsu API zamiast jednego wywołania interfejsu API na edycję.
- powiedzmy, że jest ekran, który miesza informacje z tabel db ORDER, SALESMEN i PRODUCT, powinienem uzyskać te dane w jednym wywołaniu zamiast trzech.
istnieje ryzyko, że możemy skończyć z najbardziej restrykcyjnym interfejsem API, jaki istnieje, a także z najbardziej bezużyteczną, niereagującą aplikacją mobilną.
Chodzi o to, że jestem tam tylko nowym kontrahentem i potrzebuję czegoś, co pomogłoby mi przedstawić te punkty, niektóre artykuły z cenionych źródeł lub coś w tym rodzaju. Główni gracze kompromitują się ze stylem REST dla swojego klienta mobilnego (np. Poprzez użycie punktów końcowych zagregowanego API złożonego).
Lub jakiekolwiek rozwiązanie tego ogólnego problemu. Dzięki!