Restful API与更少的HTTP请求

时间:2014-06-18 21:48:15

标签: ruby-on-rails rest cordova xmlhttprequest

我正在开发一款新的移动应用程序,它将与rails服务器通信。最初的想法是保持安静并遵循所有约定,但这违背了客户端最佳实践和最小化HTTP请求的性能。我想知道你什么时候应该保持安静,每个资源类型只能进行一次api呼叫,什么时候应该拨打一个电话,更新,添加,删除并返回一些不同资源的列表。

例如,我正在处理的应用程序将是一个记分应用程序。登录后,我会返回用户信息,记分员可以编辑的游戏列表,以及相关的所有统计信息每个游戏。由于此列表在第一次调用中返回,因此视图立即更改为已预先填充的游戏列表。这很快。

根据我的理解,为了保持安静,我必须先为用户信息进行登录呼叫(POST),然后再为游戏列表进行另一个(GET)调用。

另一个例子是上传统计数据。每个统计信息都有与之关联的操作,无论是删除更新还是创建。目前,所有统计数据都存储在JSON中,该JSON将向服务器发送一个POST调用。然后,服务器将遍历列表并根据需要删除,更新或创建统计信息。现在我应该为每个统计数据做一个单独的 POST DELETE PUT 调用吗?

我非常了解restful是什么,但我没有理解何时/为何使用它,以及何时只需将所有内容组合成一个api调用以提高最终用户的性能。

1 个答案:

答案 0 :(得分:1)

你有吗? (a)实际的,经测量的性能问题, (b)一个好的,经过深思熟虑的论证,为什么你会有一个,或者 (c)模糊地担心REST很健谈?

听起来像(c)。是的,REST可以很健谈。通常用caching和良好的端点设计来解决这个问题。

  

根据我的理解,为了保持安宁,我必须先行   为用户信息进行登录调用(POST),然后进行   另一个(GET)呼叫游戏列表。

那将是传统的。初始POST进行重定向以获取游戏列表并不是不合理的。您可以执行GET conditionally(If-Modified-Since,If-None-Match),这将节省带宽和服务器时间。您还可以为GET的结果设置显式的到期时间,以保存对服务器的一些调用。

  

另一个例子是上传统计数据。每个统计都有一个动作   与之关联,无论是删除,更新还是创建。目前   所有统计数据都存储在一个JSON中,该JSON将发送一个POST调用   服务器。然后服务器将遍历列表并删除,   更新,或根据需要创建统计数据。现在我应该是   对每个统计数据进行单独的POST,DELETE或PUT调用是否正确?

在这种情况下,听起来你想要的动词是PATCH。您可以在集合端点(例如/stats)上调用PATCH,并在一次调用中包含所有更新。我建议使用RFC 6902中定义的结构来处理PATCH请求。