我将REST接口绑定到现有应用程序上,我很好奇最合适的解决方案是如何处理会返回过高数据量的资源被检索。如何处理REST API中的大量资源
该应用程序是一个现有的时间表系统,其中一个资源是一组用户的“时间槽”。 对这些资源的一个例子URI是:
/users/44/timeslots/
我已经读了很多,涉及到如何提供过滤该资源检索子问题,我已经有一个解决方案。
我想知道如何(或者如果)我应该处理这种情况:在上面的URI上发出一个GET会从数十或数十万行返回兆字节的数据,并且需要相当数量的服务器资源实际上首先回应。
- 在这些情况下,是否有一个HTTP响应被惯例使用?
我发现HTTP代码413,其涉及太大请求实体,而不是一个,这将是适当的,用于当响应实体将太大 - 是否有限制响应或告诉替代常规客户认为这是一个愚蠢的要求?
- 我应该让服务器遵从这个大规模的请求吗?
编辑:要清楚,我有过滤和实现的资源的分裂,并考虑对其他大集合资源分页。我想适当地回应那些没有道理的请求(并且显然已经被构建URI的客户请求)。
这样的请求返回那么多的数据实际上是一个问题吗?或者,您是否仅仅试图安全防范意外检索,这会导致浪费服务器资源和带宽? – 2011-03-25 22:31:07
如果请求很愚蠢,那么不要实现该资源的处理程序,并在某人错误地构造该URI时返回404。 ......然后在构建URL的时候击败他们:-) – 2011-03-26 00:01:00
@ jeff-hall返回那么多数据没有问题,它只是防止意外检索的安全措施,正如你所提到的。 – 2011-03-26 00:32:47