【问题标题】:Handle Paginated api on the client side在客户端处理分页 api
【发布时间】:2016-03-17 18:53:57
【问题描述】:

我创建了一个 api,它遵循三个参数 pagelongitudelatitude。因此,在发出请求时,您传递用户位置和给定页面,api 将返回按用户位置排序的组织页面。此数据在移动数据库的客户端保存/更新。我的问题是,当尝试在视图中填充这些数据时,我如何在客户端知道哪些数据已更新,哪些未更新,因为它是一个分页 API,它只会更新/保存页面上的对象数量?

到目前为止,我只尝试填充它在页面上检索到的对象数量,但是 api 中的对象可能会根据用户更改位置的速度来切换页面?我曾考虑在请求数据时在我的移动数据库对象中制作某种标志,但不太确定在这种情况下该怎么做?

【问题讨论】:

  • 我已经完成了检索数据,但我需要从客户的角度进行设计。

标签: objective-c swift rest pagination api-design


【解决方案1】:

我倾向于认为您的本地数据库与用户的当前位置相关,由其经度和纬度定义。因此,如果用户改变了他的位置,我建议你清理本地数据库,并重新填充你从服务器获得的新位置。

这将是一种简单化的方法。如果,正如您所提到的,对于附近的位置,您获得的组织出现在先前位置的不同页面中,则可能的优化是将每个组织的当前页面(以及页面内的位置)存储在数据库中。当您检索新位置时,您检查收到的每个组织是否已存储在数据库中(组织需要有一个唯一的 ID 才能执行此操作),然后更改位置/页面以匹配从服务器接收到的内容新位置。

【讨论】:

  • 好的,但就缓存而言,清除本地数据库不是坏习惯吗?
  • 完全没有,这取决于具体情况,以及您首先拥有本地缓存​​的原因...用于离线使用?为了性能?...在​​您的情况下,如果用户经常更改位置,则可能没有意义。它还取决于给定时间的缓存有多大以及许多其他因素......但无论如何,正如我在回答中提到的那样,如果您可以识别收到的组织,您可以选择更优化的解决方案。
猜你喜欢
  • 1970-01-01
  • 2019-11-25
  • 2014-01-16
  • 2016-04-21
  • 2020-12-16
  • 2018-04-17
  • 2011-07-25
  • 2018-10-07
相关资源
最近更新 更多