首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RESTful系统中一次请求的多条记录

RESTful系统中一次请求的多条记录
EN

Stack Overflow用户
提问于 2010-04-17 00:35:12
回答 3查看 8.2K关注 0票数 15

我所见过的关于RESTful架构的所有示例都只涉及一条记录。例如,向mydomain.com/foo/53发送GET请求以获取Foo 53,或者向mydomain.com/foo发送POST以创建新的foo。

但是如果有多个记录呢?能够通过id请求一系列Foos或发布一组新的Foos通常使用单个API请求会比使用几十个单独的请求更有效。您是否会“重载”mydomain.com/foo以同时处理单个或多个记录的请求?或者您会添加一个mydomain.com/foo-multiple来处理多个POSTs和GETs吗?

我正在设计一个系统,它可能需要一次获取许多记录(类似于mydomain.com/foo/53,54,66,86,87),但由于我还没有看到任何这样的示例,我想知道是不是RESTful体系结构中有什么地方让这种方法“错误”。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-17 00:44:48

虽然我看不出您的方法有任何本质上的错误,但是对于您的应用编程接口的用户来说,想要具有任意I的foo记录似乎有点奇怪。我立即怀疑他们正在使用If来表示不同的概念,例如,上周创建的所有foo等等。如果这就是他们正在做的事情,那么您可能应该在服务器上公开该功能,而不是使用If列表作为代理。

票数 6
EN

Stack Overflow用户

发布于 2010-04-17 12:28:52

在单个请求中不返回多个记录是有充分理由的,因为它的可缓存能力和可伸缩性都较差。任何时候,当你想知道REST是如何工作的,或者为什么是REST,看看网页。当你请求一个页面时,它会出现指向其他资源的链接,比如多个图像、css文件、js文件等。

虽然尝试将所有这些资源都放在一个请求中似乎更有效,但它更具可扩展性和缓存能力,可以将所有这些资源都作为单独的资源处理,并允许web服务器和保持连接来处理许多资源的有效请求。如果您将所有css、javascript和图像内联到可以表示整个页面的某个单一下载中,那么当您访问另一个需要某些相同资源的页面时,您必须重新下载所有这些内容,因为在浏览器第一次可以缓存时,您没有将它们作为单独的资源正确引用。

当你有一个代表多个资源列表的东西时,restful的方法是让列表只是一个单独资源的urls列表,并分别获取每个资源,就像flicker的网页包含页面上所有图像的urls一样,它不会尝试将它们都内联到页面本身。

当资源适当地允许缓存并被单独引用时,缓存命中率可能会变得非常高,从而允许web服务器处理更多的负载,并允许在客户端和服务器之间缓存代理服务器,以防止请求甚至必须命中服务器。使用这种方法web运行得很好,在认为这听起来很疯狂之前,请仔细考虑一下。

票数 11
EN

Stack Overflow用户

发布于 2016-05-03 23:01:44

这是一个古老的问题,但尽管如此,我还是写这篇文章给任何可能在这里寻找答案的人。

应用程序请求由ID指定的多个记录有很多合理的理由,不需要任何像“上周创建”或“在Date1和Date2之间创建”之类的逻辑。想象一下这样一种情况:向用户呈现一个记录网格/列表,用户可以手动选择多个记录进行进一步处理。

话虽如此,这里已经提出了许多解决方案:How to construct a REST API that takes an array of id's for the resources

然而,我认为最好的解决方案是@nilesh在同一讨论中提出的:https://stackoverflow.com/a/32436345/134120

首先进行POST,传递您想要获取的ID,服务器将返回一个批次ID,然后您使用该批次ID执行get以获取所有记录。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2654640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档