我正在移动端上开发一个新的iOS应用程序项目。正在进行一些体系结构更改,事实证明,我们将不得不依赖自定义构建的私有API,该API将由我们正在构建的应用程序以及网站等其他客户端使用。
正在设计的API遵循映射到HTTP动词的以资源为中心的URI和CRUD操作的Rest样式。像:
GET www.example.com/books
DELETE www.example.com/books/482094
POST www.example.com/users/6793
问题在于,这种风格通常导致移动客户端需要执行许多请求来加载单个应用程序屏幕或管理单个用户UI操作。这将导致应用程序处于加载模式8秒钟,直到拥有所需的一切为止。缓慢且无响应的应用程序。
移动客户端在连接方面有严重的限制,因此理想情况下,我们应遵循以下规则:
1个屏幕== 1个API调用
1个保存== 1个API调用。
在许多情况下,这会使您与REST设计原则发生冲突,例如:
- 假设您的应用离线了一天,您需要与后端数据库的四个表进行同步,并且您需要像
www.example.com/sync_everything?since=2015-07-24
- 可以说有一个屏幕,用户可以在其中编辑许多对象,例如在待办事项列表中勾选任务。应该有一种方法可以在一个批处理API调用中编辑所有这些任务记录,而不是每次编辑都可以一个API调用。
- 假设有一个混合了来自ORDER,SALESMEN和PRODUCT数据库表的信息的屏幕,我应该一次调用而不是三个调用来获取该数据。
这样做的风险是,我们最终可能会获得最宁静的API,以及最无用的无响应移动应用程序。
问题是我只是那里的新承包商,我需要的是可以帮助我阐明这些要点的东西,一些受到尊敬的消息来源的文章等等。主要参与者在针对其移动客户端的REST风格上妥协(例如:通过使用复合聚合API端点)。
或针对此一般问题的任何解决方案。谢谢!