Estou trabalhando em um novo projeto de aplicativo para iOS, no lado móvel. Algumas mudanças na arquitetura estão acontecendo e, por acaso, teremos que confiar em uma API privada customizada que será usada pelo aplicativo que estamos construindo e também por outros clientes, como um site.
A API que está sendo projetada segue o estilo Restante de operações URI e CRUD centradas em recursos mapeadas para verbos HTTP. coisas como:
GET www.example.com/books
DELETE www.example.com/books/482094
POST www.example.com/users/6793
O problema é que esse estilo geralmente leva à necessidade do cliente móvel fazer muitas solicitações para carregar uma única tela de aplicativo ou gerenciar uma ação de interface do usuário de usuário único. Isso faz com que o aplicativo fique no modo de carregamento por 8 segundos até ter tudo o que é necessário. Um aplicativo lento e sem resposta.
Os clientes móveis têm sérias limitações quando se trata de conectividade e, idealmente, devemos seguir esse tipo de regra:
1 tela == 1 chamada de API
1 gravação == 1 chamada de API.
Existem muitas situações em que isso o coloca em rota de colisão com os princípios de design do REST, por exemplo:
- digamos que seu aplicativo esteja offline por um dia e você precise sincronizar com quatro tabelas dos bancos de dados back-end e precise de uma chamada como
www.example.com/sync_everything?since=2015-07-24
- digamos que haja uma tela em que o usuário possa editar muitos de seus objetos, por exemplo, marcando tarefas em sua lista de tarefas. deve haver uma maneira de editar todos esses registros de tarefas em uma única chamada de API em lote, em vez de uma chamada de API por edição.
- digamos que exista uma tela que misture informações das tabelas db ORDER, SALESMEN e PRODUCT, eu deveria obter esses dados em uma chamada em vez de três.
o risco é que possamos acabar com a API mais tranquila que existe e também o aplicativo móvel que não responde de forma mais inútil.
O problema é que sou apenas um novo contratado e o que preciso é de algo que me ajude a argumentar, alguns artigos de fontes bem respeitadas ou algo assim. Principais players comprometendo-se com o estilo REST para seu cliente móvel (por exemplo: usando pontos finais de API agregados compostos).
Ou qualquer solução para esse problema geral. Obrigado!