我正在开发一款新的移动应用程序,它将与rails服务器通信。最初的想法是保持安静并遵循所有约定,但这违背了客户端最佳实践和最小化HTTP请求的性能。我想知道你什么时候应该保持安静,每个资源类型只能进行一次api呼叫,什么时候应该拨打一个电话,更新,添加,删除并返回一些不同资源的列表。
例如,我正在处理的应用程序将是一个记分应用程序。登录后,我会返回用户信息,记分员可以编辑的游戏列表,以及相关的所有统计信息每个游戏。由于此列表在第一次调用中返回,因此视图立即更改为已预先填充的游戏列表。这很快。
根据我的理解,为了保持安静,我必须先为用户信息进行登录呼叫(POST),然后再为游戏列表进行另一个(GET)调用。
另一个例子是上传统计数据。每个统计信息都有与之关联的操作,无论是删除,更新还是创建。目前,所有统计数据都存储在JSON中,该JSON将向服务器发送一个POST调用。然后,服务器将遍历列表并根据需要删除,更新或创建统计信息。现在我应该为每个统计数据做一个单独的 POST , DELETE 或 PUT 调用吗?
我非常了解restful是什么,但我没有理解何时/为何使用它,以及何时只需将所有内容组合成一个api调用以提高最终用户的性能。
答案 0 :(得分:1)
听起来像(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请求。